home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 26 / Cream of the Crop 26.iso / program / inter54a.zip / INTERRUP.C < prev    next >
Text File  |  1997-06-29  |  353KB  |  9,282 lines

  1. Interrupt List, part 3 of 16
  2. Copyright (c) 1989,1990,1991,1992,1993,1994,1995,1996,1997 Ralf Brown
  3. --------T-1512-------------------------------
  4. INT 15 - VMiX - "sys_sleep" - PUT PROCESS TO SLEEP
  5.     AH = 12h
  6.     STACK:    WORD    process ID
  7. Return: AX = status (SYS_OK or SYS_ERROR)
  8. SeeAlso: AH=03h"MultiDOS",AX=101Dh,AH=13h"VMiX"
  9. --------T-1512-------------------------------
  10. INT 15 - MultiDOS Plus - TURN ON AltZ TOGGLE
  11.     AH = 12h
  12. Note:    enables the Alt-Z MultiDOS command/program-selection hotkey
  13. SeeAlso: AH=11h"MultiDOS"
  14. Index:    hotkeys;MultiDOS Plus
  15. --------Q-1512--BH00-------------------------
  16. INT 15 - TopView - SEND MESSAGE - "HANDLE" - RETURN OBJECT HANDLE
  17.     AH = 12h
  18.     BH = 00h
  19.     BL = which handle to return
  20.         00h handle in DWORD on top of stack
  21.         01h current task's window handle
  22.         02h given task's mailbox handle (task's handle on stack)
  23.         03h current task's mailbox handle
  24.         04h given task's keyboard handle (task's handle on stack)
  25.         05h current task's keyboard object handle
  26.         06h given task's OBJECTQ handle (task's handle on stack)
  27.         07h current task's OBJECTQ handle
  28.         08h      \
  29.           thru > return 0000:0000 under DV < 2.26
  30.         10h      /
  31.         0Ch (2.26+) task owning object with handle in DWORD on top of stack
  32.         0Dh (2.26+) task handle of owner (parent) of current task
  33. Return: DWORD on top of stack is object handle
  34. Note:    BL=0Ch,0Dh returns 00000000h if the object is not open (keyboard,
  35.       mailbox, panel, pointer, and timer objects) or is an orphan (task,
  36.       window)
  37. SeeAlso: AH=12h/BH=02h,AH=12h/BH=80h
  38. --------Q-1512--BH01-------------------------
  39. INT 15 - TopView - SEND MESSAGE - "NEW" - CREATE NEW OBJECT
  40.     AH = 12h
  41.     BH = 01h
  42.     BL = object type to create (see #0354)
  43.     STACK: (only if window object or WINDOW class)
  44.            DWORD address to jump to (no new task if high word == 0)
  45.            DWORD (reserved) 0 = non-task window, FFFFh = task window
  46.            DWORD bytes for task's private stack (FFFFh == default of 0100h)
  47.            DWORD bytes system memory for input buffer for READ/READN
  48.             (0 == none, -1 == default--same as logical window size)
  49.            DWORD window size, columns
  50.            DWORD window size, rows
  51.            DWORD length of window title
  52.            DWORD address of window title
  53. Return: DWORD on top of stack is new object handle
  54. Notes:    if a new task is created, it is started with
  55.       AX = BX = SI = DI = BP = 0
  56.       DX:CX = handle of parent task
  57.       DS = ES = SS = segment of private stack (and new task's handle)
  58.     new windows are orphans, inherit the colors/hidden status of the
  59.       creating task's window, and are placed in the upper left hand corner
  60.       of the screen but not automatically redrawn
  61.     new keyboards are closed, and have all object bits cleared except for
  62.       the hardware cursor bit
  63. SeeAlso: AH=12h/BH=02h,AH=12h/BH=81h
  64.  
  65. (Table 0354)
  66. Values for TopView/DESQview object type (for creation):
  67.  00h    (DV 2.0x only) handle is DWORD on top of stack
  68.  01h    (DV 2.0x only) use task's window handle
  69.  02h    (DV 2.0x only) given task's mailbox (task's handle on stack)
  70.  03h    (DV 2.0x only) current task's mailbox
  71.  04h    (DV 2.0x only) given task's keyboard (task's handle on stack)
  72.  05h    (DV 2.0x only) current task's keyboard object
  73.  08h    WINDOW class
  74.  09h    MAILBOX class
  75.  0Ah    KEYBOARD class
  76.  0Bh    TIMER object (counts down 32-bit time in 10ms increments)
  77.  0Fh    POINTER object
  78.  10h    PANEL object
  79. --------Q-1512--BH02-------------------------
  80. INT 15 - TopView - SEND MESSAGE - "FREE" - FREE AN OBJECT
  81.     AH = 12h
  82.     BH = 02h
  83.     BL = object
  84.         00h handle in DWORD on top of stack
  85.         window: close window and free
  86.         timer: free timer
  87.         panel: free panel object
  88.         pointer: free pointer
  89.         01h task's window handle - kills task, never returns
  90.         02h given task's mailbox (task's handle on top of stack)
  91.         03h current task's mailbox
  92.         04h given task's keyboard (task's handle on top of stack)
  93.         05h current task's keyboard object
  94. Return: STACK popped if handle passed on stack
  95. Notes:    when a window is freed, its keyboard and pointer objects are freed;
  96.       task windows also free any mailbox, objectq, and panel objects held
  97.       by the task and any child tasks
  98.     if the keyboard being freed is the default keyboard for a task, this
  99.       call is equivalent to CLOSE
  100.     panel and pointer objects are automatically closed if open
  101. SeeAlso: AH=12h/BH=01h,AH=12h/BH=0Dh,AH=12h/BH=82h
  102. --------Q-1512--BH03-------------------------
  103. INT 15 - TopView - SEND MESSAGE - "ADDR" - GET HANDLE OF MESSAGE SENDER
  104.     AH = 12h
  105.     BH = 03h
  106.     BL = object
  107.         00h mailbox handle in DWORD on top of stack
  108.         02h sender of last msg read from mailbox (task's handle on stack)
  109.         03h sender of last msg read from current task's mailbox
  110. Return: DWORD on stack is task handle of message sender
  111. SeeAlso: AH=12h/BH=00h,AH=12h/BH=83h
  112. --------Q-1512--BH03-------------------------
  113. INT 15 - DESQview v2.26+ - "CONNECT" - CONNECT TWO WINDOWS
  114.     AH = 12h
  115.     BH = 03h
  116.     BL = window to be connected
  117.         00h handle of window to be attached in DWORD on top of stack
  118.         01h attach current task's main window
  119.     STACK: DWORD handle of window to attach to or 00000000h to detach
  120. Return: STACK popped
  121. Notes:    when two windows are connected, both will move if the user moves either
  122.     multiple windows may be attached to a single window, but each window
  123.       may only be attached to one window at a time
  124. SeeAlso: AH=12h/BH=83h
  125. --------Q-1512--BX0300-----------------------
  126. INT 15 - TopView - SEND MESSAGE - "DIR" - GET PANEL FILE DIRECTORY
  127.     AH = 12h
  128.     BX = 0300h
  129.     STACK: DWORD handle of panel object (see #0355)
  130. Return: STACK: DWORD length of directory (always multiple of 14 bytes)
  131.            DWORD address of directory
  132. Note:    a null string is returned if the object is not open
  133. SeeAlso: AH=12h/BX=0400h"APPLY",AH=12h/BH=83h
  134.  
  135. Format of TopView panel file:
  136. Offset    Size    Description    (Table 0355)
  137.  00h  2 BYTEs    C0h C3h
  138.  02h    BYTE    number of panels in file
  139.  03h    for each panel in file:
  140.         8 BYTEs  blank-padded panel name
  141.           DWORD  panel offset in file
  142.           WORD   panel length
  143.     data for panels (each consists of one or more window/query/manager
  144.       streams); first byte of each panel must be 1Bh, fifth byte must be
  145.       E5h
  146. --------Q-1512--BH04-------------------------
  147. INT 15 - TopView - SEND MESSAGE - "READ" - READ NEXT LOGICAL LINE OF WINDOW
  148.     AH = 12h
  149.     BH = 04h
  150.     BL = window to read from
  151.         00h handle is DWORD on top of stack
  152.         01h use calling task's default window
  153.         0Ch (DV 2.26+) default window of task owning handle on top of stack
  154.         0Dh (DV 2.26+) default window of parent task of current task
  155. Return: STACK:    DWORD number of bytes read
  156.         DWORD address of buffer
  157. Notes:    reading starts at the current logical cursor position; the cursor is
  158.       updated to point at the character following the last one read
  159.     any translucent blanks (FFh) which are visible on screen are changed
  160.       to the character which is seen through them
  161.     the string produced by the read is placed in an input buffer which may
  162.       be reused by the next READ or READN of a window
  163.     window stream opcodes D8h and D9h determine whether the read returns
  164.       characters or attributes
  165. SeeAlso: AH=12h/BH=05h"WINDOW",AH=12h/BH=12h,AH=12h/BH=84h
  166. --------Q-1512--BH04-------------------------
  167. INT 15 - TopView - SEND MESSAGE - "READ" - GET NEXT RECORD FROM OBJECT
  168.     AH = 12h
  169.     BH = 04h
  170.     BL = object
  171.         00h handle is DWORD on top of stack
  172.         mailbox: wait for and get next message
  173.         keyboard: wait for and get pointer to next input buffer
  174.         pointer: wait for and get next message
  175.         02h get next message from mailbox (task's handle on top of stack)
  176.         03h get next message from current task's mailbox
  177.         04h get the next input from keyboard (handle on top of stack)
  178.         05h get the next input from task's default keyboard
  179.         06h wait for input from any object in OBJECTQ (handle on stack)
  180.         07h wait for input from any object in task's default OBJECTQ
  181. Return: STACK: (if objectq) DWORD handle of object with input
  182.            (otherwise)  DWORD number of bytes
  183.                 DWORD address of pointer message (see #0356)
  184. Notes:    for a keyboard in keystroke mode, the input buffer is a single byte
  185.       containing the character code as returned by the BIOS; the BIOS scan
  186.       code is available via the STATUS call if the character is zero
  187.     for a keyboard in field mode, the input buffer format is determined
  188.       by the field table header for the window the keyboard is attached to
  189.     keyboard input buffers and mailbox message buffers may be invalidated
  190.       by the next READ, ERASE, CLOSE, or FREE message to the same object
  191. SeeAlso: AH=12h/BH=05h"OBJECT",AH=12h/BH=84h
  192.  
  193. Format of DESQview pointer message:
  194. Offset    Size    Description    (Table 0356)
  195.  00h    WORD    row
  196.  02h    WORD    column
  197.  04h    BYTE    status (see #0357)
  198.  05h    BYTE    field number or zero (APILEVEL >= 2.00 only)
  199.  
  200. Bitfields for DESQview pointer status:
  201. Bit(s)    Description    (Table 0357)
  202.  7-2    number of clicks-1 if multiple-click mode active
  203.  7    set when press/release mode active and button pressed
  204.  6    set when press/release mode active and button released
  205.  1-0    button pressed (00=none,01=button1,10=button2)
  206. SeeAlso: #0356
  207. --------Q-1512--BX0400-----------------------
  208. INT 15 - TopView - SEND MESSAGE - "READ" - WAIT FOR TIMER TO EXPIRE
  209.     AH = 12h
  210.     BX = 0400h
  211.     STACK: DWORD timer's handle
  212. Return: after timer expires
  213.     STACK: DWORD time in 1/100 sec after midnight when timer expired
  214. SeeAlso: AH=12h/BH=0Ah,AH=12h/BH=84h
  215. --------Q-1512--BX0400-----------------------
  216. INT 15 - TopView - SEND MESSAGE - "APPLY" - WRITE PANEL TO WINDOW
  217.     AH = 12h
  218.     BX = 0400h
  219.     STACK: DWORD handle of panel object
  220.            DWORD window's handle (or 0 for current task's window)
  221.            DWORD length of panel name
  222.            DWORD pointer to panel name
  223. Return: STACK: DWORD handle of window which was used
  224.            DWORD handle of keyboard or 0
  225. Notes:    status of APPLY may be checked with STATUS message
  226.     panel MUST have the following format
  227.       first byte must be 1Bh (i.e. must start with a stream)
  228.       first opcode in stream must be E5h
  229.         single byte arg of opcode is interpreted thus:
  230.           bits 7,6    11 means create new window
  231.             10 means create new field table for existing window
  232.             01 means use existing window and field table
  233.           bit 5 if set, panel contains a field table
  234.             (creates a new keyboard and puts it in field mode)
  235.           bit 4 if set, panel contains input fields
  236.           bit 3 if set, panel contains select fields but no input fields
  237.     if the panel contains input or select fields, a keyboard handle is
  238.       returned; either the window's current open keyboard or a
  239.       newly-created keyboard object.  The caller should read that keyboard
  240.       to obtain input from the panel.
  241. SeeAlso: AH=12h/BH=84h
  242. --------Q-1512--BH05------------------------
  243. INT 15 - TopView - SEND MESSAGE - "WRITE" - WRITE TO OBJECT
  244.     AH = 12h
  245.     BH = 05h
  246.     BL = object
  247.         00h handle is DWORD on top of stack
  248.         timer: start timer to end at a specified time
  249.         keyboard: add input buffer to queue
  250.         pointer: move pointer icon to specified position
  251.         02h send message by value/status=0 to mbox (task's handle on stack)
  252.         03h send message by value/status=0 to current task's mailbox
  253.         04h add input buffer to KEYBOARD queue (handle on top of stack)
  254.         05h add input buffer to task's default KEYBOARD queue
  255.         06h add an object to OBJECTQ (handle on top of stack)
  256.         07h add an object to task's default OBJECTQ
  257.     STACK: (if mailbox)  DWORD length
  258.                  DWORD address
  259.            (if keyboard) DWORD status (scan code in keystroke mode)
  260.                  DWORD length (should be 1 in keystroke mode)
  261.                  DWORD address
  262.            (if objectq)  DWORD handle of object to add
  263.            (if timer)    DWORD 1/100ths seconds since midnight (actually
  264.                    only accurate to 1/18 sec)
  265.            (if pointer)  DWORD column relative to origin of window
  266.                  DWORD row relative to origin of window
  267. Return: STACK popped
  268. Notes:    under DV 2.2+, failed mailbox writes may return CF set (see AX=DE15h)
  269.     the data and status written to a keyboard object must match the format
  270.       returned by the keyboard object in the current mode
  271.     the pointer position is scaled according to the current scaling factors
  272. SeeAlso: AH=12h/BH=04h,AH=12h/BH=85h
  273. --------Q-1512--BH05-------------------------
  274. INT 15 - TopView - SEND MESSAGE - "WRITE" - WRITE STRING TO WINDOW
  275.     AH = 12h
  276.     BH = 05h
  277.     BL = window to write to
  278.         00h DWORD on top of stack is window handle
  279.         01h write string to task's default window
  280.         0Ch (DV 2.26+) default window of task owning handle on top of stack
  281.         0Dh (DV 2.26+) default window of parent of current task
  282.     STACK: DWORD object handle if handle passed on stack
  283.            DWORD total length of string (high word == 0)
  284.            DWORD address of string to display (see #0358)
  285. Return: indicated actions performed
  286.     a. non-control characters are displayed (opcodes DEh and DFh control
  287.        whether the attributes are left or changed to the current attrib)
  288.     b. CR/LF/BS/Tab cause the usual cursor movement
  289.     c. ESC starts a data structure with additional commands if following
  290.        byte is less than 20h; otherwise, it is written to the window
  291.     STACK:    DWORD handle of new window if window stream opcode E6h
  292.         else nothing (arguments have been popped)
  293. SeeAlso: AH=12h/BH=04h,AH=12h/BH=85h
  294.  
  295. Format of stream data structure:
  296. Offset    Size    Description    (Table 0358)
  297.  00h    BYTE    1Bh magic value identifying start of stream
  298.  01h    BYTE    stream type (00h, 01h, 10h, 14h-1Fh legal)
  299.         (see #0359,#0365,#0366,#0367)
  300.  02h    WORD    length of remainder of stream in bytes
  301.     var-length fields follow, each an OPCODE followed by
  302.          zero or more args
  303.  
  304. (Table 0359)
  305. Values for MODE 00h (set or display values) "WINDOW STREAM" opcodes:
  306. Opcodes:args
  307.  00h  display 20h blanks with the default attribute
  308.  01h-1Fh display OPCODE blanks with the default attribute
  309.  20h  display char with default attribute 20h times
  310.     BYTE char to repeat
  311.  21h-3Fh display char with default attribute OPCODE-20h times
  312.     BYTE char to repeat
  313.  40h  display 20h blanks with specified attribute
  314.     BYTE attribute of blanks
  315.  41h-5Fh display OPCODE-40h blanks with specified attribute
  316.     BYTE attribute of blanks
  317.  60h  display next 20h characters
  318.     20h BYTEs characters to display
  319.  61h-7Fh display next OPCODE-60h characters
  320.     N BYTEs characters to display
  321.  80h-87h display N blanks with default attribute
  322.     BYTE low 8 bits of 11-bit count (high 3 in low 3 bits of OPCODE)
  323.           [000h means 800h]
  324.  88h-8Fh display N copies of the character
  325.     BYTE low 8 bits of 11-bit count (high 3 in low 3 bits of OPCODE)
  326.           [000h means 800h]
  327.     BYTE character to repeat
  328.  90h-97h display N blanks with specified attribute
  329.     BYTE low 8 bits of 11-bit length (high 3 in low 3 bits of OPCODE)
  330.           [000h means 800h]
  331.     BYTE attribute
  332.  98h-9Fh display string at logical cursor pos
  333.     BYTE low 8 bits of 11-bit length (high 3 in low 3 bits of OPCODE)
  334.           [000h means 800h]
  335.     N BYTEs string to display
  336.  A0h  set logical cursor row
  337.     BYTE row number (0 is top)
  338.  A1h  set logical cursor column
  339.     BYTE column number (0 is leftmost)
  340.  A2h  set top edge of scrolling region
  341.     BYTE row
  342.  A3h  set left edge of scrolling region
  343.     BYTE column
  344.  A4h  set row of physical window position
  345.     BYTE line
  346.  A5h  set column of physical window position
  347.     BYTE column
  348.  A6h  set height of physical window
  349.     BYTE number of rows
  350.  A7h  set width of physical window
  351.     BYTE number of columns
  352.  A8h  set viewport row
  353.     BYTE row
  354.  A9h  set viewport column
  355.     BYTE column
  356.  AAh  set virtual screen height [contents of window unpredictable after]
  357.     BYTE rows
  358.  ABh  set virtual screen width [contents of window unpredictable after]
  359.     BYTE columns
  360.  ACh-AEh unused
  361.  AFh  set compatible/preferred video modes
  362.     BYTE compatibility/preference mask
  363.         bit 7    compatible with monochrome
  364.         bit 6    compatible with color text, EGA/VGA graphics
  365.         bit 5    compatible with medium-resolution CGA graphics
  366.         bit 4    compatible with high-resolution CGA graphics
  367.         bit 3    prefer monochrome
  368.         bit 2    prefer color text, EGA/VGA graphics
  369.         bit 1    prefer medium-resolution CGA graphics
  370.         bit 0    prefer high-resolution CGA graphics
  371.  B0h  move logical cursor down
  372.     BYTE number of rows (signed, negative values move up)
  373.         [if rows=0 and hardware cursor owner, update hardware cursor]
  374.  B1h  move logical cursor right
  375.     BYTE number of columns (signed, negative values move left)
  376.         [if cols=0 and hardware cursor owner, update hardware cursor]
  377.  B2h  shift top edge of scrolling region
  378.     BYTE number of rows (signed)
  379.  B3h  shift left edge of scrolling region
  380.     BYTE number of columns (signed)
  381.  B4h  shift physical window down
  382.     BYTE number of lines (signed)
  383.  B5h  shift physical window right
  384.     BYTE number of columns (signed)
  385.  B6h  expand physical window vertically
  386.     BYTE number of lines (signed)
  387.  B7h  expand physical window horizontally
  388.     BYTE number of columns (signed)
  389.  B8h  adjust viewport row
  390.     BYTE number of rows (signed)
  391.  B9h  adjust viewport column
  392.     BYTE number of columns (signed)
  393.  BAh  adjust virtual screen height [contents of window unpredict after]
  394.     BYTE number of rows to increase (signed)
  395.  BBh  adjust virtual screen width [contents of window unpredictbl after]
  396.     BYTE number of columns to increase (signed)
  397.  BCh-BFh reserved (currently unused)
  398.  C0h  set logical cursor position
  399.     BYTE row number (0 is top border)
  400.     BYTE column number (0 is left border)
  401.  C1h  set top left corner of scrolling region
  402.     BYTE row
  403.     BYTE column
  404.  C2h  set physical window pos
  405.     BYTE upper left row (no top border if 0)
  406.     BYTE upper left column (no left border if 0)
  407.  C3h  set current window size
  408.     BYTE number of rows
  409.     BYTE number of columns
  410.  C4h  set upper left corner of viewport (portion of virtual screen displayed
  411.       in window)
  412.     BYTE row
  413.     BYTE column
  414.  C5h  set size of virtual screen [contents unpredictable afterwards]
  415.     BYTE number of rows
  416.     BYTE number of columns
  417.  C6h  unused
  418.  C7h  unused
  419.  C8h  set logical cursor relative to current position
  420.     BYTE number of rows to move down (signed)
  421.     BYTE number of columns to move right (signed)
  422.         [if rows=cols=0 and hardware cursor owner, update hardw cursor]
  423.  C9h  shift top left corner of scrolling region
  424.     BYTE number of rows (signed)
  425.     BYTE number of columns (signed)
  426.  CAh  set window pos relative to current position
  427.     BYTE number of rows to shift down (signed)
  428.     BYTE number of columns to shift right (signed)
  429.  CBh  set window size relative to current size
  430.     BYTE number of rows to expand (signed)
  431.     BYTE number of cols to expand (signed)
  432.  CCh  shift viewport relative to current position
  433.     BYTE rows to shift (signed)
  434.     BYTE cols to shift (signed)
  435.  CDh  resize virtual screen
  436.     BYTE number of rows to expand (signed)
  437.     BYTE number of columns to expand (signed)
  438.  CEh  scroll text when using E8h-EBh/F8h-FBh opcodes (default)
  439.  CFh  scroll attributes when using  E8h-EBh/F8h-FBh opcodes
  440.  D0h  allow window frame to extend beyond screen
  441.  D1h  always display a complete frame, even if window extends beyond edge of
  442.       screen
  443.  D2h  allow DV to change logical colors on video mode switch (default)
  444.  D3h  application changes logical attributes
  445.  D4h  window is visible [must redraw to actually make visible]
  446.  D5h  window is hidden [must redraw to actually remove]
  447.  D6h  window has frame (default)
  448.  D7h  window unframed [must redraw to actually remove frame]
  449.  D8h  READ/READN will read characters from window (default)
  450.  D9h  READ/READN will read attributes from window
  451.  DAh  use logical attributes, which may be remapped (see #0360)
  452.  DBh  use physical attributes for characters
  453.  DCh  enable special actions for control characters (default)
  454.  DDh  disable special control char handling, all chars displayable by BIOS TTY
  455.       call
  456.  DEh  write both character and attribute (default)
  457.  DFh  write character only, leave attribute untouched
  458.  E0h  repeat following commands through E1h opcode
  459.     BYTE number of times to repeat (00h means 256 times)
  460.  E1h  end of commands to repeat, start repeating them
  461.  E2h  set current output color
  462.     BYTE color
  463.  E3h  clear virtual screen from scroll origin to end using current color
  464.  E4h  redraw window
  465.  E5h  select menu style
  466.     BYTE style (normally 18h)
  467.         bits 5,4 = 01 use two-letter menu entries for remainder of
  468.           this stream
  469.  E5h  (panel file only)
  470.     BYTE modifier
  471.         bits 7,6 = 11 panel stream creates new window
  472.              = 10 panel defines new field table for existing window
  473.              = 01 panel stream uses existing window & field table
  474.         bit 5 = 1 stream contains a field table (create kyboard object)
  475.         bit 4 = 1 stream defines input fields (create keyboard object)
  476.         bit 3 = 1 stream defines select fields but not input fields
  477.         bit 2 = 1 stream defines exclusive input window (DV 2.2)
  478.         bit 1 reserved
  479.         bit 0 reserved
  480.  E6h  create new window and perform rest of manipulations in new window
  481.     BYTE number of rows
  482.     BYTE number of columns
  483.     Return: DWORD object handle of new window returned on stack at end
  484.     Note:    the window is created with a physical size of 0x0 at the
  485.           same position as the window to which this stream was sent
  486.  E7h  no operation
  487.  E8h  scroll area up (top left corner defined by opcode C1h)
  488.     BYTE height
  489.     BYTE width
  490.  E9h  scroll area down (top left corner defined by opcode C1h)
  491.     BYTE height
  492.     BYTE width
  493.  EAh  scroll area left (top left corner defined by opcode C1h)
  494.     BYTE height
  495.     BYTE width
  496.  EBh  scroll area right (top left corner defined by opcode C1h)
  497.     BYTE height
  498.     BYTE width
  499.  ECh  set logical attributes for window contents
  500.     BYTE video modes command applies to
  501.         bit 7    monochrome
  502.         bit 6    color text, EGA/VGA graphics
  503.         bit 5    medium-resolution CGA graphics
  504.         bit 4    high-resolution CGA graphics
  505.     BYTE which attributes to set
  506.         bit 7    if set, copy single following byte to indicated attribs
  507.         bits 4-6  number of first attribute to change - 1
  508.         bits 0-3  number of consecutive attributes to change
  509.     N BYTEs new attributes
  510.  EDh  set logical attributes for window frame
  511.     BYTE video modes command applies to (also see opcode ECh)
  512.     BYTE which attributes to set
  513.         bit 7    if set, copy single following byte to indicated attrs
  514.         bits 4-6  number of first attribute to change - 1
  515.         bits 0-3  number of consecutive attributes to change
  516.     N BYTEs new attributes
  517.           attributes
  518.                1 = top left corner
  519.                2 = top right corner
  520.                3 = bottom left corner
  521.                4 = bottom right corner
  522.                5 = top edge
  523.                6 = bottom edge
  524.                7 = left edge
  525.                8 = right edge
  526.  EEh  set characters for window frame
  527.     BYTE video modes command applies to (also see opcode ECh)
  528.     BYTE which characters to set
  529.         bit 7    if set, copy single following byte to indicated chars
  530.         bits 4-6  number of first character to change - 1
  531.         bits 0-3  number of consecutive characters to change
  532.     N BYTEs new chars (same relative position as attributes above)
  533.  EFh  set window name
  534.     BYTE length of name (should be in range 0 to logical screen width)
  535.     N BYTEs name
  536.  F0h  clear input field to blanks
  537.     BYTE field number
  538.  F1h  fill input field with character
  539.     BYTE field number
  540.     BYTE char
  541.  F2h  set color of input field
  542.     BYTE field number (1-N)
  543.     BYTE attribute
  544.  F3h  set initial contents of input field
  545.     BYTE field number (1-N)
  546.     N BYTEs enough chars to exactly fill field as defined by op FFh
  547.  F4h  position cursor to start of specific input field
  548.     BYTE field number (1-N)
  549.  F5h  change field table entry
  550.     BYTE field number
  551.     7-8 BYTEs field table entry (also see opcode FFh below)
  552.  F6h  set field type
  553.     BYTE field number
  554.     BYTE type
  555.         00h inactive
  556.         40h output field
  557.         80h input field
  558.         C0h deselected field
  559.         C2h selected field
  560.  F7h  "broadcast write"    write data to fields with program output bit set in
  561.       the field table entry, in field number order
  562.     N BYTEs (total length of all program output fields)
  563.  F8h  scroll field up a line
  564.     BYTE field number
  565.  F9h  scroll field down a line
  566.     BYTE field number
  567.  FAh  scroll field left
  568.     BYTE field number
  569.  FBh  scroll field right
  570.     BYTE field number
  571.  FCh  set field table header
  572.     6 BYTEs    field table header (see #0361)
  573.  FDh  reset modified bit for all fields
  574.  FEh  reset selected and modified bits for all fields
  575.  FFh  set up input fields
  576.     6 BYTEs    table header (see #0361)
  577.     7/8N BYTEs the field table entries, one for each field (see #0363)
  578.     Note:    DESQview uses and updates the actual copy of the information
  579.           which is contained in the stream.  Thus this info must remain
  580.           intact until after the data entry is complete.
  581. SeeAlso: #0358,#0365
  582.  
  583. (Table 0360)
  584. Values for TopView logical attributes:
  585.  01h    normal text
  586.  02h    highlighted normal text
  587.  03h    help text
  588.  04h    highlighted help text
  589.  05h    error message
  590.  06h    highlighted error message
  591.  07h    emphasized text
  592.  08h    marked text
  593.  9-16    reverse video versions of 1-8
  594. SeeAlso: #0359
  595.  
  596. Format of TopView field table header:
  597. Offset    Size    Description    (Table 0361)
  598.  00h    BYTE    number of fields (must be <= existing number of fields)
  599.  01h    BYTE    screen behavior bits (see #0362)
  600.  02h    BYTE    current input field (updated by DESQview)
  601.  03h    BYTE    current select field (updated by DESQview)
  602.  04h    BYTE    attribute for select fields when they are pointed at
  603.  05h    BYTE    attribute for select fields which have been selected
  604. SeeAlso: #0359,#0363
  605.  
  606. Bitfields for TopView screen behavior bits:
  607. Bit(s)    Description    (Table 0362)
  608.  7    reserved
  609.  6    menu items may be selected via keyboard
  610.  5    left mouse button in "status" mode (press anywhere in window
  611.       immediately returns control to application)
  612.  4    right mouse button in "status" mode
  613.  3    select fields return contents or blanks rather than 'Y' or 'N'
  614.  2    modified bits reset on return to application
  615.  1-0    type of data returned
  616.     00 no data returned on read of keyboard
  617.     01 data returned as array of characters containing all fields packed
  618.           together, with no field numbers
  619.     10 data returned as numbered variable-length records for all fields
  620.     11 data returned as numbered variable-length records for the fields
  621.           which were modified
  622. SeeAlso: #0359
  623.  
  624. Format of TopView field table entry:
  625. Offset    Size    Description    (Table 0363)
  626.  00h    BYTE    start row    \
  627.  01h    BYTE    start column  \ if menu selection and start is to
  628.  02h    BYTE    end row          / right or below end, select from kbd only
  629.  03h    BYTE    end column   /
  630.  04h    BYTE    field type (see #0364)
  631.  05h    BYTE    modifier
  632.         if type is fill-in, then bit flags to determine behavior
  633.           bit 7     automatically enter CR when field full
  634.           bit 6     move to next field when current field is full
  635.           bit 5     enter text from right end (for numbers)
  636.           bit 4     force input to uppercase
  637.           bit 3     clear old contents on first keystroke
  638.           bit 2     input returned when cursor moves out of
  639.               modified field ("validate", API level 2.02+)
  640.           bit 1     reserved
  641.           bit 0     reserved
  642.         if select field, first key to press to activate
  643.           00h if have to point-&-click or is an extended-ASCII
  644.               keystroke (only if two-key menus enabled)
  645.  06h    BYTE    (select field only) normal color of field
  646.  07h    BYTE    second key for select field.  This byte is present iff
  647.           two-letter menu entries selected with opcode E5h, and in that
  648.           case is present regardless of field type
  649. SeeAlso: #0361
  650.  
  651. Bitfields for TopView field type:
  652. Bit(s)    Description    (Table 0364)
  653.  7,6    field class
  654.     00 inactive (non-entry) field
  655.     01 echos keystrokes input to make menu selection
  656.     10 fill-in field
  657.     11 select field
  658.  5    field can be filled by broadcast write (F7h opcode)
  659.  4    reserved
  660.  3    reserved
  661.  2    reserved
  662.  1    set if field selected
  663.  0    set if field modified
  664. SeeAlso: #0363
  665.  
  666. (Table 0365)
  667. Values for MODE 01h "QUERY STREAM" opcodes:
  668. (valid only for those opcodes listed here)
  669.  A0h return logical cursor row in next byte
  670.  A1h return logical cursor column in next byte
  671.  A2h return top row of scrolling region in next byte
  672.  A3h return left column of scrolling region in next byte
  673.  A4h return row of physical window origin in next byte
  674.  A5h return column of physical window origin in next byte
  675.  A6h return height of physcial window in next byte
  676.  A7h return width of physical window in next byte
  677.  A8h return row of viewport origin in next byte
  678.  A9h return column of viewport origin in next byte
  679.  AAh return height of virtual screen in next byte
  680.  ABh return width of virtual screen in next byte
  681.  AFh return current video mode in next byte
  682.  C0h return current logical cursor position in next two bytes
  683.  C1h return top left corner of scrolling region in next two bytes
  684.  C2h return current window position in next two bytes
  685.  C3h return current window size in next two bytes
  686.  C4h return current viewport origin in next two bytes
  687.  C5h return current virtual screen size in next two bytes
  688.  D0h \ overwritten with D0h if frames may fall off screen edge
  689.  D1h /               D1h if frames always displayed entirely
  690.  D2h \ overwritten with D2h if DESQview controls color palette
  691.  D3h /               D3h if application changes color palette
  692.  D4h \ overwritten with D4h if window visible
  693.  D5h /               D5h if window hidden
  694.  D6h \ overwritten with D6h if window has frame
  695.  D7h /               D7h if window unframed
  696.  D8h \ overwritten with D8h if reading characters from window
  697.  D9h /               D9h if reading attributes from window
  698.  DAh \ overwritten with DAh if using logical attributes
  699.  DBh /               DBh if using physical attributes
  700.  DCh \ overwritten with DCh if TTY control char interpretation on
  701.  DDh /               DDh if TTY control char interpretation off
  702.  DEh \ overwritten with DEh if writing both characters and attributes
  703.  DFh /               DFh if leaving attributes untouched
  704.  E2h return current color in next byte
  705.  ECh get logical attributes for window contents
  706.     BYTE execute call if currently in specified video mode
  707.         bit 7    monochrome
  708.         bit 6    color text, EGA/VGA graphics
  709.         bit 5    medium-resolution CGA graphics
  710.         bit 4    high-resolution CGA graphics
  711.     BYTE which attributes to get
  712.         bit 7    unused???
  713.         bits 4-6 first attribute to get - 1
  714.         bits 0-3 number of consecutive attributes
  715.     N BYTEs buffer to hold attributes
  716.  EDh get logical attributes for window frame
  717.     BYTE execute call if currently in video mode (also see opcode ECh)
  718.     BYTE which attributes to get
  719.         bit 7    unused???
  720.         bits 4-6 first attribute to get - 1
  721.         bits 0-3 number of consecutive attributes
  722.     N BYTEs buffer to hold attributes
  723.  EEh get characters for window frame
  724.     BYTE execute call if currently in video mode (also see opcode ECh)
  725.     BYTE which attributes to get
  726.         bit 7    unused???
  727.         bits 4-6 first char to get - 1
  728.         bits 0-3 number of consecutive chars
  729.     N BYTEs buffer to hold chars
  730.  EFh return first N characters of current window name
  731.     BYTE    max length of returned name
  732.     N BYTEs buffer to hold window name
  733.  F3h return contents of specified field
  734.     BYTE field number
  735.     N BYTEs buffer to hold field contents (size equal to field size)
  736.  F5h get field table entry
  737.     BYTE field number
  738.     7-8 BYTEs buffer to hold field table entry (see #0363)
  739.     Notes:    DV < 2.26 always returns 7 bytes
  740.         DV 2.26+ w/ APILEVEL < 2.26 returns 8 bytes iff field table
  741.           is using 8-byte entries and eighth byte after    F5h is E7h
  742.           (NOP); otherwise, 7 bytes are returned
  743.         DV 2.26+ w/ APILEVEL > 2.26 returns 7 or 8 bytes depending
  744.           on the field table entry size
  745.  F6h get type of a field
  746.     BYTE field number
  747.     BYTE type
  748.  FCh get field table header
  749.     6 BYTEs buffer to store field table header (see #0361)
  750. SeeAlso: #0358,#0366
  751.  
  752. (Table 0366)
  753. Values for MODE 10h "MANAGER STREAM" opcodes (valid only for those listed):
  754.  00h allow window to be moved horizontally
  755.  01h allow window to be moved vertically
  756.  02h allow window to change width
  757.  03h allow window to change height
  758.  04h allow window to be scrolled horizontally
  759.  05h allow window to be scrolled vertically
  760.  06h allow "Close Window" menu selection for application
  761.  07h allow "Hide Window" menu selection for application
  762.  08h allow application to be suspended ("Rearrange/Freeze")
  763.  0Eh allow "Scissors" menu
  764.  10h allow DESQview main menu to be popped up
  765.  11h allow "Switch Windows" menu
  766.  12h allow "Open Window" menu
  767.  13h allow "Quit" menu selection
  768.  20h-33h opposite of 00h-13h, disallow specified action
  769.  40h notify if horizontal position of window changes
  770.  41h notify if vertical position of window changes
  771.  42h notify if width of window changes
  772.  43h notify if height of window changes
  773.  44h notify if window scrolled horizontally
  774.  45h notify if window scrolled vertically
  775.  46h notify if window is closed--program has to clean up and exit itself
  776.  47h notify if window is hidden
  777.  48h notify if "?" on main menu selected
  778.  49h notify if pointer message sent to window
  779.  4Ah notify if window is placed in foreground
  780.  4Bh notify if window is placed in background
  781.  4Ch notify if video mode changes
  782.  4Dh notify if "Scissors" menu "Cut" option selected
  783.  4Eh notify if "Scissors" menu "Copy" option selected
  784.  4Fh notify if "Scissors" menu "Paste" option selected
  785.  50h notify if DESQview main menu about to pop up
  786.  51h notify if DESQview main menu popped down
  787.  60h-71h     opposite of 40h-51h: don't notify on specified event
  788.  84h attach window to parent task's window (both move together)
  789.  85h detach window from parent task's window (may move independently)
  790.  86h disable background operation for application
  791.  87h enable running in background
  792.  88h set minimum size of physical window
  793.     BYTE rows
  794.     BYTE columns
  795.  89h set maximum size of physical window
  796.     BYTE rows
  797.     BYTE cols
  798.  8Ah set primary asynchronous notification routine (see #0368)
  799.     DWORD address of routine, 0000h:0000h means none (see also below)
  800.  8Bh set async notification parameter
  801.     DWORD 32-bit value passed to 8Ah async routine in DS:SI
  802.  ACh (DV2.2+) perform regular select field attribute processing
  803.  ADh (DV2.2+) protect attributes in selected field from being lost
  804.  AEh make window default notify window for owning app (API level 2.00+)
  805.  AFh set selected field marker character
  806.     BYTE character to display at left edge of selected fields
  807.  BCh set standard field processing mode
  808.  BDh set alternate field processing mode (enables cursor pad for menus)
  809.  BEh disables changing reverse logical attributes with ECh opcode
  810.  BFh enables changing reverse logical attributes with ECh opcode
  811.  C0h make current window topmost in system
  812.  C1h force current process into foreground
  813.  C2h make current window topmost in process
  814.  C3h position mouse pointer relative to origin of current field
  815.     BYTE rows below upper left corner of field
  816.     BYTE columns to right of upper left corner of field
  817.  C4h position mouse pointer relative to origin of given field
  818.     BYTE field number
  819.     BYTE rows below upper left corner of field
  820.     BYTE columns to right of upper left corner of field
  821.  C5h orphan current window (also hides it)
  822.     Note: must be last in stream; all subsequent commands ignored
  823.  C6h show all windows for this process
  824.  C7h hide all windows for this process
  825.  C8h suspend process and hide all its windows
  826.  C9h force current process into background
  827.  CAh make current window bottom-most in process
  828.  CBh cancel current window manager operation, remove DV menu, give control
  829.       to topmost application
  830.  CCh orphan window and give it to the system for use as paste data
  831.  CEh reorder windows
  832.     DWORD pointer to null-terminated list of words; each word is segment
  833.           of object handle for a window
  834.  FFh no operation
  835. SeeAlso: #0358,#0365,#0367
  836.  
  837. (Table 0367)
  838. Values for MODES 14h to 1Fh "USER STREAMS":
  839.     normally NOPs, but may be defined by SETESC message to invoke FAR
  840.     routines, one for each mode number
  841.       on entry to handler,
  842.         DS:SI -> first byte of actual stream (not header)
  843.         CX = number of bytes in stream
  844.         ES:DI = window's handle
  845. SeeAlso: #0365,#0366
  846.  
  847. (Table 0368)
  848. Values asynchronous notification routine defined by man.stream 8Ah called with:
  849.     ES:DI = handle of window
  850.     DS:SI is 32-bit value set by 8Bh manager stream opcode
  851.        mailbox contains message indicating event
  852.           Opcode
  853.            40h  horizontal movement
  854.            DWORD object handle of window
  855.            BYTE     new row
  856.            BYTE     new col
  857.            41h  vertical movement
  858.            DWORD object handle of window
  859.            BYTE     new row
  860.            BYTE     new col
  861.            42h  horizontal size change
  862.            DWORD object handle of window
  863.            BYTE     new rows
  864.            BYTE     new cols
  865.            43h  vertical size change
  866.            DWORD object handle of window
  867.            BYTE     new rows
  868.            BYTE     new cols
  869.            44h  scrolled horizontally
  870.            DWORD object handle of window
  871.            BYTE     mouse row within window
  872.            BYTE     mouse column within window
  873.            BYTE     field mouse is on, 0 if none
  874.            BYTE     amount moved: >0 right, <0 left, 0 done
  875.            45h  scrolled vertically
  876.            DWORD object hande of window
  877.            BYTE     mouse row within window
  878.            BYTE     mouse column within window
  879.            BYTE     field mouse is on, 0 if none
  880.            BYTE     amount moved: >0 down, <0 up, 0 done
  881.            46h  window close request
  882.            DWORD object handle of window
  883.            BYTE     mouse pointer row
  884.            BYTE     mouse pointer column
  885.            BYTE     field mouse is on, 0 if none
  886.            47h  application's windows hidden
  887.            48h  Help for Program selected
  888.            DWORD object handle of window
  889.            BYTE     mouse pointer row
  890.            BYTE     mouse pointer column
  891.            BYTE     field mouse is on, 0 if none
  892.            49h  pointer message sent to window
  893.            DWORD pointer handle which received message
  894.            4Ah  switched to window from another ("raise")
  895.            4Bh  switched away from the window ("lower")
  896.            4Ch  video mode changed
  897.            BYTE new BIOS video mode
  898.            4Dh  Scissors/cUt selected
  899.            DWORD object handle of window
  900.            BYTE     row of upper left corner
  901.            BYTE     column of upper left corner
  902.            BYTE     field number ul corner is in, 0=none
  903.            DWORD handle of orphaned window created with
  904.              copy of data from specified region
  905.            BYTE     height of region
  906.            BYTE     width of region
  907.            4Eh  Scissors/Copy selected
  908.            DWORD object handle of window
  909.            BYTE     row of upper left corner
  910.            BYTE     column of upper left corner
  911.            BYTE     field number ul corner is in, 0=none
  912.            DWORD handle of orphaned window created with
  913.              copy of data from specified region
  914.            BYTE     height of region
  915.            BYTE     width of region
  916.            4Fh  Scissors/Paste selected
  917.            DWORD object handle of window
  918.            BYTE     row of upper left corner
  919.            BYTE     column of upper left corner
  920.            BYTE     field number ul corner is in, 0=none
  921.            DWORD handle of orphaned window with data
  922.            BYTE     height of region
  923.            BYTE     width of region
  924.             Note: orphaned data window should be adopted or freed
  925.                 when done
  926.            50h  main menu about to pop up
  927.            51h  main menu popped down
  928. Return: all registers unchanged
  929. --------Q-1512--BH06-------------------------
  930. INT 15 - DESQview 2.20+ - SEND MESSAGE - "SETPRI" - SET PRIORITY WITHIN OBJECTQ
  931.     AH = 12h
  932.     BH = 06h
  933.     BL = object
  934.         00h object handle in DWORD on top of stack
  935.         mailbox, keyboard, pointer, or timer
  936.         (DV 2.50+) window
  937.         01h (DV 2.50+) current task's window
  938.         04h given task's keyboard (task's handle on top of stack)
  939.         05h current task's default keyboard
  940.     STACK: DWORD new priority of object in task's OBJECTQ
  941.             (new priority of task if window handle)
  942. Return: STACK popped
  943. Notes:    initially all objects have the same default value.  Should only make
  944.       relative adjustments to this default value.
  945.     when changing priorities, all objects already on the objectq are
  946.       reordered
  947.     for window handles, only the non-blocked task(s) with the highest
  948.       priority receive CPU time under DESQview 2.50-2.52; the default
  949.       priority is 0Ah
  950. SeeAlso: AH=12h/BH=07h,AH=12h/BH=87h
  951. --------Q-1512--BH07-------------------------
  952. INT 15 - DESQview 2.20+ - SEND MESSAGE - "GETPRI" - GET PRIORITY WITHIN OBJECTQ
  953.     AH = 12h
  954.     BH = 07h
  955.     BL = object
  956.         00h object handle in DWORD on top of stack
  957.         mailbox, keyboard, pointer, or timer
  958.         (DV 2.50+) window
  959.         01h (DV 2.50+) current task's window
  960.         04h given task's keyboard (task's handle on top of stack)
  961.         05h current task's default keyboard
  962. Return: STACK: DWORD object priority
  963. Note:    initially all objects have the same default value.  Should only make
  964.       relative adjustments to this default value.
  965. SeeAlso: AH=12h/BH=06h
  966. --------Q-1512--BH08-------------------------
  967. INT 15 - TopView - SEND MESSAGE - "SIZEOF" - GET OBJECT SIZE
  968.     AH = 12h
  969.     BH = 08h
  970.     BL = object
  971.         00h handle in DWORD on top of stack
  972.         window: total character positions in window
  973.         timer: elapsed time since timer started
  974.         pointer: number of messages queued to pointer object
  975.         panel: number of panels in panel file
  976.         keyboard: number of input buffers queued
  977.         01h total chars in current task's default window
  978.         02h number of messages in task's mailbox (task's handle on stack)
  979.         03h number of messages in current task's mailbox
  980.         04h number of input buffers queued in task's kbd (handle on stack)
  981.         05h number of input buffers queued for current task's default kbd
  982.         06h number of objects queued in OBJECTQ (task's handle on stack)
  983.         07h number of objects queued in current task's OBJECTQ
  984.         0Ch (DV 2.26+) total chars in window owning handle on top of stack
  985.         0Dh (DV 2.26+) total chars in parent task's window
  986. Return: DWORD on top of stack is result (any handle on stack has been popped)
  987. Note:    for panel objects, a count of zero is returned if no panel file is open
  988.       for the object
  989. SeeAlso: AH=12h/BH=04h,AH=12h/BH=09h
  990. --------Q-1512--BH09-------------------------
  991. INT 15 - TopView - SEND MESSAGE - "LEN" - GET OBJECT LENGTH
  992.     AH = 12h
  993.     BH = 09h
  994.     BL = object
  995.         00h handle in DWORD on top of stack
  996.         window: get chars/line
  997.         timer: get 1/100 seconds remaining before timer expires
  998.         mailbox: (DV/X) get number of bytes queued to mailbox
  999.         01h get number of chars/line in current task's default window
  1000.         0Ch (DV 2.26+) get chars/line in window owning handle on top of stk
  1001.         0Dh (DV 2.26+) get chars/line in parent task's window
  1002. Return: DWORD on top of stack is length (any handle on stack has been popped)
  1003. SeeAlso: AH=12h/BH=08h
  1004. --------Q-1512--BH0A-------------------------
  1005. INT 15 - TopView - SEND MESSAGE - "ADDTO" - WRITE CHARS AND ATTRIBS TO WINDOW
  1006.     AH = 12h
  1007.     BH = 0Ah
  1008.     BL = window to write to
  1009.         00h window handle is DWORD on top of stack
  1010.         01h current task's default window
  1011.         0Ch (DV 2.26+) default window of task owning handle on top of stack
  1012.         0Dh (DV 2.26+) default window of parent of current task
  1013.     STACK:    DWORD count of attributes
  1014.         DWORD address of attribute string
  1015.         DWORD count of characters
  1016.         DWORD address of character string
  1017. Return: STACK popped
  1018. Notes:    if one string is longer than the other, the shorter one will be reused
  1019.       until the longer one is exhausted
  1020.     the cursor is left just after the last character written
  1021. SeeAlso: AH=12h/BH=0Bh"WINDOW"
  1022. --------Q-1512--BH0A-------------------------
  1023. INT 15 - TopView - SEND MESSAGE - "ADDTO" - SEND MAILBOX MESSAGE/STAT BY VALUE
  1024.     AH = 12h
  1025.     BH = 0Ah
  1026.     BL = mailbox to write to
  1027.         00h handle is DWORD on top of stack
  1028.         02h default mailbox of task whose handle is on top of stack
  1029.         03h current task's default mailbox
  1030.     STACK:    DWORD    status (low byte)
  1031.         DWORD    length of message
  1032.         DWORD    address of message
  1033. Return: STACK popped
  1034. Notes:    the message is copied into either system or common memory
  1035.     insufficient memory normally causes the process to be aborted; under
  1036.       DESQview 2.2+, failed writes may return CF set instead (see AX=DE15h)
  1037. SeeAlso: AH=12h/BH=0Bh"MAILBOX"
  1038. --------Q-1512--BH0A-------------------------
  1039. INT 15 - TopView - SEND MESSAGE - "ADDTO" - SET OBJECT BITS
  1040.     AH = 12h
  1041.     BH = 0Ah
  1042.     BL = object
  1043.         00h handle is DWORD on top of stack
  1044.         timer: start timer for specified interval
  1045.         pointer: set control flags (see #0370)
  1046.         keyboard: set control flags (see #0369)
  1047.         04h set control flags on KEYBOARD object (handle on top of stack)
  1048.         05h set control flags on task's default KEYBOARD object
  1049.     STACK: (if timer)   DWORD duration in 1/100 seconds
  1050.            (otherwise)  DWORD bits to set
  1051. Return: STACK popped
  1052. SeeAlso: AH=12h/BH=0Bh"OBJECT"
  1053.  
  1054. Bitfields for DESQview keyboard object bits:
  1055. Bit(s)    Description    (Table 0369)
  1056.  15    reserved, can't be set
  1057.  14    unused
  1058.  13    reserved, can't be set
  1059.  12-6    unused
  1060.  5    (DV 2.2+) exclusive input
  1061.  4    filter all keys (used with handler established by SETESC)
  1062.     if 0, only keys that would normally be displayed are filtered
  1063.  3    program continues executing while input in progress
  1064.  2    insert mode active for field mode
  1065.  1    hardware cursor displayed when task is hardware cursor owner
  1066.     must be set if keyboard in field mode and field table includes input
  1067.       fields
  1068.  0    keyboard is in field mode rather than keystroke mode
  1069.  
  1070. Bitfields for DESQview pointer object bits:
  1071. Bit(s)    Description    (Table 0370)
  1072.  15    reserved, can't be set
  1073.  14-8    unused
  1074.  7    mouse pointer is hidden while in window
  1075.  6    get messages even if window not topmost
  1076.  5    get messages even if window not foreground
  1077.  4    multiple clicks separated by less than 1/3 second are counted and
  1078.       returned in a single message
  1079.  3    pointer position is relative to screen origin, not window origin
  1080.  2    send message on button release as well as button press
  1081.  1    (DV 2.23+) send message with row=FFFFh and col=FFFFh whenever the
  1082.       pointer leaves the window
  1083.  0    send message only on button activity, not movement
  1084.     DV-specific, and INT 15/AX=DE0Fh must have been called first
  1085. --------Q-1512--BH0B-------------------------
  1086. INT 15 - TopView - SEND MESSAGE - "SUBFROM" - WRITE ATTRIBUTES TO WINDOW
  1087.     AH = 12h
  1088.     BH = 0Bh
  1089.     BL = window to write attributes to
  1090.         00h handle is DWORD on top of stack
  1091.         01h current task's default window
  1092.         0Ch (DV 2.26+) default window of task owning handle on top of stack
  1093.         0Dh (DV 2.26+) default window of parent of current task
  1094.     STACK:    DWORD number of attributes to write
  1095.         DWORD address of attributes
  1096. Return: STACK popped
  1097. Note:    the attributes are written starting at the current cursor position; the
  1098.       cursor is left just after the last position written
  1099. SeeAlso: AH=12h/BH=0Ah"WINDOW"
  1100. --------Q-1512--BH0B-------------------------
  1101. INT 15 - TopView - SEND MESSAGE - "SUBFROM" - SEND MAILBOX MESSAGE/STAT BY REF
  1102.     AH = 12h
  1103.     BH = 0Bh
  1104.     BL = mailbox to write to
  1105.         00h handle is DWORD on top of stack
  1106.         02h default mailbox of task whose handle is on top of stack
  1107.         03h current task's default mailbox
  1108.     STACK:    DWORD    status (low byte)
  1109.         DWORD    length of message
  1110.         DWORD    address of message
  1111. Return: STACK popped
  1112. Notes:    only a pointer to the message is stored, but the write may still fail
  1113.       due to insufficient memory
  1114.     under DV 2.2+, failed mailbox writes may return CF set (see AX=DE15h)
  1115. SeeAlso: AH=12h/BH=0Ah"MAILBOX"
  1116. --------Q-1512--BH0B-------------------------
  1117. INT 15 - TopView - SEND MESSAGE - "SUBFROM" - REMOVE OBJECT FROM OBJECTQ
  1118.     AH = 12h
  1119.     BH = 0Bh
  1120.     BL = OBJECTQ from which to remove all copies of a particular object
  1121.         06h OBJECTQ of task whose handle is on top of stack
  1122.         07h task's default OBJECTQ
  1123.     STACK:    DWORD    handle of object to remove
  1124. Return: STACK popped
  1125. Note:    should be sent whenever an object is erased or closed
  1126. --------Q-1512--BH0B-------------------------
  1127. INT 15 - TopView - SEND MESSAGE - "SUBFROM" - RESET OBJECT BITS
  1128.     AH = 12h
  1129.     BH = 0Bh
  1130.     BL = object
  1131.         00h handle is DWORD on top of stack
  1132.         pointer: reset control flags
  1133.         keyboard: reset control flags
  1134.         04h clear control flags on KEYBOARD object (handle on top of stack)
  1135.         05h clear control flags on task's default KEYBOARD object
  1136.     STACK:    DWORD    which bits to clear (see #0369,#0370)
  1137. Return: STACK popped
  1138. SeeAlso: AH=12h/BH=0Ah"OBJECT"
  1139. --------Q-1512--BH0C-------------------------
  1140. INT 15 - TopView - SEND MESSAGE - "OPEN" - OPEN OBJECT
  1141.     AH = 12h
  1142.     BH = 0Ch
  1143.     BL = object
  1144.         00h handle is DWORD on top of stack
  1145.         window:      fill with given character from scroll origin to end
  1146.         keyboard: attach to a window
  1147.         timer:      open
  1148.         pointer:  start taking input for window
  1149.         panel:      associate with a panel file
  1150.         01h fill task's default window with given char from scrl org to end
  1151.         02h open given task's mailbox for input (task's handle on stack)
  1152.         03h open current task's mailbox
  1153.         04h attach a KEYBOARD to a window (handle on top of stack)
  1154.         05h attach task's default KEYBOARD to a window
  1155.         06h open a task's OBJECTQ (task's handle on top of stack)
  1156.         07h open current task's OBJECTQ
  1157.         0Ch (DV 2.26+) fill def window of task owning handle on top of stck
  1158.         0Dh (DV 2.26+) fill default window of parent of current task
  1159.      STACK: (if window)   DWORD character to fill with
  1160.         (if keyboard) DWORD handle of window to attach to
  1161.         (if pointer)  DWORD handle of window to attach to
  1162.         (if panel)    DWORD length of filename or resident panel
  1163.                   DWORD address of filename or resident panel
  1164.         (otherwise)   nothing
  1165. Return: STACK popped
  1166. Notes:    if first byte of panel file name is 1Bh, then the "name" IS a panel
  1167.     if first two bytes of panel file "name" are C0hC3h, then the "name" IS
  1168.       the panel file
  1169.     result code of open may be retrieved with STATUS message
  1170.     logical cursor is left at scroll origin after filling window
  1171.     the task opening a mailbox becomes its owner, and the only task allowed
  1172.       to read the mailbox
  1173.     messages are only sent to a pointer object when the mouse is positioned
  1174.       in the window to which the pointer has been attached
  1175.     there is no need to explicitly open a timer object, as ADDTO and WRITE
  1176.       messages automatically open the timer
  1177. SeeAlso: AH=12h/BH=0Dh,AH=12h/BH=14h"LOCK"
  1178. --------Q-1512--BH0D-------------------------
  1179. INT 15 - TopView - SEND MESSAGE - "CLOSE" - CLOSE OBJECT
  1180.     AH = 12h
  1181.     BH = 0Dh
  1182.     BL = object
  1183.         00h handle is DWORD on top of stack
  1184.         timer:      close
  1185.         keyboard: detach from window and discard queued input
  1186.         pointer:  stop taking input
  1187.         panel:      close
  1188.         mailbox:  close, unlock, and discard any pending messages
  1189.         02h close given task's mailbox (task's handle on top of stack)
  1190.         03h close task's default mailbox
  1191.         04h close KEYBOARD object (handle on top of stack)
  1192.         05h close task's default KEYBOARD
  1193.         06h close given task's OBJECTQ (task's handle on top of stack)
  1194.         07h close current task's OBJECTQ
  1195. Return: STACK popped if handle passed on stack
  1196. Notes:    when an OBJECTQ is closed, each object in the OBJECTQ is sent an
  1197.       ERASE message (AH=12h/BH=0Eh)
  1198.     when a panel object is closed, the panel file and any panels currently
  1199.       in use are freed; window and keyboard objects created by APPLY are
  1200.       not affected, but field mode input ceases
  1201.     open but idle timer objects consume a small amount of CPU time
  1202. SeeAlso: AH=12h/BH=0Ch,AH=12h/BH=0Eh,AH=12h/BH=14h"LOCK"
  1203. --------Q-1512--BH0E-------------------------
  1204. INT 15 - TopView - SEND MESSAGE - "ERASE" - ERASE OBJECT
  1205.     AH = 12h
  1206.     BH = 0Eh
  1207.     BL = object
  1208.         00h handle is DWORD on top of stack
  1209.         window:      clear from scroll origin to end of window
  1210.         keyboard: discard input
  1211.         timer:      cancel current interval
  1212.         pointer:  discard all pending messages
  1213.         mailbox:  discard all pending messages
  1214.         01h clear task's default window from scroll origin to end
  1215.         02h discard all queued messages in mailbox (handle on top of stack)
  1216.         03h discard all queued messages in current task's default mailbox
  1217.         04h discard all input queued to KEYBOARD (handle on top of stack)
  1218.         05h discard all input queued to task's default KEYBOARD
  1219.         06h remove all objects from OBJECTQ (task's handle on top of stack)
  1220.         07h remove all objects from current task's OBJECTQ
  1221.         0Ch (DV 2.26+) clear window of task owning handle on top of stack
  1222.         0Dh (DV 2.26+) clear default window of parent of current task
  1223. Return: STACK popped if handle passed on stack
  1224. Note:    when an OBJECTQ is erased, each object in the OBJECTQ is also erased
  1225. SeeAlso: AH=12h/BH=02h
  1226. --------Q-1512--BH0F-------------------------
  1227. INT 15 - TopView - SEND MESSAGE - "STATUS" - GET OBJECT STATUS
  1228.     AH = 12h
  1229.     BH = 0Fh
  1230.     BL = object
  1231.         00h handle is DWORD on top of stack
  1232.         timer:     is it running?
  1233.         pointer: return status of last message
  1234.         panel:     verify success of last OPEN or APPLY
  1235.         02h return status of last msg READ from mailbox (handle on stack)
  1236.         03h return status of last msg READ from task's default mailbox
  1237.         04h get stat of last msg from task's KEYBOARD (task handle on stk)
  1238.         05h get status of last msg from task's default KEYBOARD
  1239.         06h return whether OBJECTQ is open or not (handle on top of stack)
  1240.         07h return whether task's default OBJECTQ is open or not
  1241. Return: DWORD on top of stack is status (any handle passed on stack popped)
  1242. Notes:    if object is a panel object, the status indicates the error code:
  1243.       00h successful
  1244.       14h panel name not in panel directory
  1245.       15h not enough memory to apply panel
  1246.       16h invalid panel format
  1247.       17h panel file already open
  1248.       81h-92h  DOS error codes+80h            \  codes > 80h indicate
  1249.       95h not enough memory to open panel file     > that the panel was
  1250.       98h null panel file name            /  not opened
  1251.     if object is a timer, the status is:
  1252.       00000000h open but not running
  1253.       40000000h open and running
  1254.       80000000h closed
  1255.     if object is an OBJECTQ, the status is:
  1256.       00000000h open
  1257.       80000000h closed
  1258.     if object is a keyboard in keystroke mode, the status is the extended
  1259.       character code (scan code) of the last keystroke
  1260.     if object is a keyboard in field mode, the status indicates the reason
  1261.       for the last return from the field manager
  1262.       00h Enter key pressed
  1263.       01h Button 1 or keystroke selection
  1264.       02h Button 2
  1265.       03h validation
  1266.       04h auto Enter on field
  1267.       1Bh Escape pressed
  1268.       46h ^Break pressed
  1269.       other: extended code for key terminating input
  1270.     the status of mailbox messages sent by the window manager is always 80h
  1271.     the status of a pointer message is the same as the status field in the
  1272.       message
  1273. SeeAlso: AH=12h/BH=04h"READ"
  1274. --------Q-1512--BH10-------------------------
  1275. INT 15 - TopView - SEND MESSAGE - "EOF" - GET OBJECT EOF STATUS
  1276.     AH = 12h
  1277.     BH = 10h
  1278.     BL = object
  1279.         00h handle is DWORD on top of stack
  1280.         window: return TRUE if logical cursor past end of window
  1281.         mailbox: ???
  1282.         01h returns TRUE if logical cursor past end of task's def window
  1283.         02h return ??? for task's mailbox (task's handle on top of stack)
  1284.         03h return ??? for current task's mailbox
  1285.         0Ch (DV 2.26+) check log crsr of window owning handle on top of stk
  1286.         0Dh (DV 2.26+) check log cursor of window of parent task
  1287. Return: DWORD on top of stack is status (any handle on stack has been popped)
  1288. --------Q-1512--BH11-------------------------
  1289. INT 15 - TopView - SEND MESSAGE - "AT" - POSITION OBJECT CURSOR
  1290.     AH = 12h
  1291.     BH = 11h
  1292.     BL = window for which to move cursor
  1293.         00h window's handle is DWORD on top of stack
  1294.         01h task's default window
  1295.         0Ch (DV 2.26+) default window of task owning handle on top of stack
  1296.         0Dh (DV 2.26+) default window of parent of current task
  1297.     STACK: DWORD column
  1298.            DWORD row
  1299. Return: STACK popped
  1300. --------Q-1512--BH11-------------------------
  1301. INT 15 - TopView - SEND MESSAGE - "SETNAME" - ASSIGN NAME TO MAILBOX
  1302.     AH = 12h
  1303.     BH = 11h
  1304.     BL = mailbox to name
  1305.         00h DWORD on top of stack is mailbox handle
  1306.         02h use given task's mailbox (task's handle on top of stack)
  1307.         03h use current task's default mailbox
  1308.     STACK: DWORD length of name
  1309.            DWORD address of name
  1310. Return: STACK popped
  1311. SeeAlso: AH=12h/BH=12h"GETNAME",AX=DE0Eh
  1312. --------Q-1512--BX1100-----------------------
  1313. INT 15 - TopView - SEND MESSAGE - "SETSCALE" - SET POINTER SCALE FACTOR
  1314.     AH = 12h
  1315.     BX = 1100h
  1316.     STACK: DWORD object handle for pointer object
  1317.            DWORD number of colums to scale pointer position to
  1318.            DWORD number of rows to scale pointer position to
  1319. Return: STACK popped
  1320. SeeAlso: AH=12h/BX=1200h
  1321. --------Q-1512--BH12-------------------------
  1322. INT 15 - TopView - SEND MESSAGE - "READN" - GET NEXT N OBJECT BYTES
  1323.     AH = 12h
  1324.     BH = 12h
  1325.     BL = window to read from
  1326.         00h handle is DWORD on top of stack
  1327.         01h read next N chars or attributes on task's default window
  1328.         0Ch (DV 2.26+) read window of task owning handle on top of stack
  1329.         0Dh (DV 2.26+) read default window of parent of current task
  1330.     STACK: DWORD count
  1331. Return: STACK: DWORD number of bytes actually read
  1332.            DWORD address of buffer containing data
  1333. Notes:    reading starts at the current logical cursor position; the cursor is
  1334.       updated to point at the character following the last one read
  1335.     any translucent blanks (FFh) which are visible on screen are changed
  1336.       to the character which is seen through them
  1337.     the string produced by the read is placed in an input buffer which may
  1338.       be reused by the next READ or READN of a window
  1339.     window stream opcodes D8h and D9h determine whether the read returns
  1340.       characters or attributes
  1341. SeeAlso: AH=12h/BH=04h"WINDOW",AH=12h/BH=05h"WINDOW"
  1342. --------Q-1512--BH12-------------------------
  1343. INT 15 - DESQview 2.50+ - SEND MESSAGE - "GETNAME" - GET NAME OF MAILBOX
  1344.     AH = 12h
  1345.     BH = 12h
  1346.     BL = mailbox for which to retrieve name
  1347.         00h DWORD on top of stack is mailbox handle
  1348.         02h use given task's mailbox (task's handle on top of stack)
  1349.         03h use current task's default mailbox
  1350.     STACK: DWORD length of buffer for name
  1351.            DWORD pointer to buffer
  1352. Return: STACK: DWORD length of returned name (or size of buffer, if less)
  1353. Program: DESQview 2.5x is distributed as part of DESQview/X 1.0x
  1354. Note:    the returned name is not NUL-terminated
  1355. SeeAlso: AH=12h/BH=11h"SETNAME",AX=DE0Eh
  1356. --------Q-1512--BX1200-----------------------
  1357. INT 15 - TopView - SEND MESSAGE - "GETSCALE" - GET POINTER SCALE FACTOR
  1358.     AH = 12h
  1359.     BX = 1200h
  1360.     STACK: DWORD object handle for pointer
  1361. Return: STACK: DWORD pointer pos scaled as if window were this many colums wide
  1362.            DWORD pointer pos scaled as if window were this many rows high
  1363. SeeAlso: AH=12h/BX=1100h
  1364. --------Q-1512--BH13-------------------------
  1365. INT 15 - TopView - SEND MESSAGE - "REDRAW" - REDRAW WINDOW
  1366.     AH = 12h
  1367.     BH = 13h
  1368.     BL = window object
  1369.         00h DWORD on top of stack is handle for window to redraw
  1370.         01h redraw task's default window
  1371.         0Ch (DV 2.26+) redraw window of task owning handle on top of stack
  1372.         0Dh (DV 2.26+) redraw default window of parent of current task
  1373. Return: STACK popped if handle was passed on stack
  1374. SeeAlso: AH=12h/BH=05h"WINDOW",AH=12h/BH=0Eh
  1375. --------Q-1512--BH13-------------------------
  1376. INT 15 - DESQview 2.50+ - SEND MESSAGE - "READINTO" - GET NEXT MAIL MESSAGE
  1377.     AH = 12h
  1378.     BH = 13h
  1379.     BL = mailbox from which to read
  1380.         00h DWORD on top of stack is mailbox handle
  1381.         02h use given task's mailbox (task's handle on top of stack)
  1382.         03h use current task's default mailbox
  1383.     STACK: DWORD size of buffer in bytes
  1384.            DWORD pointer to buffer
  1385. Return: STACK: DWORD number of bytes read
  1386. Program: DESQview 2.5x is distributed as part of DESQview/X 1.0x
  1387. Notes:    this call blocks if no input is available, but will return less than
  1388.       the requested number of bytes if some (but insufficient) data is
  1389.       available
  1390.     use this call instead of AH=12h/BH=04h if the mailbox has flag bits
  1391.       4 or 5 set, as common memory may be exhausted by that call when
  1392.       attempting to read the next message
  1393. SeeAlso: AH=12h/BH=04h"READ",AH=12h/BH=05h,AH=12h/BH=16h
  1394. --------Q-1512--BX1300-----------------------
  1395. INT 15 - TopView - SEND MESSAGE - "SETICON" - SPECIFY POINTER ICON
  1396.     AH = 12h
  1397.     BX = 1300h
  1398.     STACK: DWORD object handle for pointer
  1399.            DWORD character to use for pointer
  1400. Return: STACK popped
  1401. --------Q-1512--BH14-------------------------
  1402. INT 15 - TopView - SEND MESSAGE - "SETESC" - SET ESCAPE ROUTINE ADDRESS
  1403.     AH = 12h
  1404.     BH = 14h
  1405.     BL = message modifier
  1406.         00h handle is DWORD on top of stack
  1407.         01h define user stream
  1408.         04h intercept keystrokes from KEYBOARD to window (handle on stack)
  1409.         05h intercept keystrokes from task's default KEYBOARD to a window
  1410.     STACK: (if window)   DWORD user stream number (14h-1Fh)
  1411.                  DWORD address of FAR user stream handler
  1412.            (if keyboard) DWORD address of FAR filter function (see #0371)
  1413. Return: STACK popped
  1414.  
  1415. (Table 0371)
  1416. Values keyboard filter function is called with when keyboard is in field mode:
  1417.     AL = character
  1418.     AH = 00h or extended ASCII code if AL = 00h
  1419.     BL = field number
  1420.     CH = cursor column
  1421.     CL = cursor row
  1422.     DL = field type modifier (sixth item in field table entry)
  1423.     DH = seventh item in field table entry
  1424.     ES:SI = window's handle
  1425.     DS:DI -> field table entry for field containing the cursor
  1426. Return: AH = action to take
  1427.         00h use keystroke
  1428.         01h ignore keystroke
  1429.         FFh beep and ignore keystroke
  1430. Note: the filter function is not allowed to make INT 15, DOS, or BIOS calls
  1431. --------Q-1512--BH14-------------------------
  1432. INT 15 - TopView - SEND MESSAGE - "LOCK" - REQUEST EXCLUSIVE ACCESS TO RESOURCE
  1433.     AH = 12h
  1434.     BH = 14h
  1435.     BL = object
  1436.         00h mailbox handle is DWORD on top of stack
  1437.         02h use given task's mailbox (task's handle on top of stack)
  1438.         03h use current task's default mailbox
  1439. Return: STACK popped if BL=00h
  1440. Note:    release exclusive access by sending CLOSE message to mailbox
  1441.     access may be requested multiple times, and requires multiple CLOSEs
  1442. SeeAlso: AH=12h/BH=0Dh
  1443. --------Q-1512--BH15-------------------------
  1444. INT 15 - DESQview v2.20+ - SEND MESSAGE - "SETFLAGS" - SET OBJECT FLAGS
  1445.     AH = 12h
  1446.     BH = 15h
  1447.     BL = object
  1448.         00h DWORD on top of stack
  1449.         mailbox, keyboard, or pointer only
  1450.         02h mailbox for task whose handle is on top of stack
  1451.         03h mailbox for current task
  1452.         04h keyboard for task whose handle is on top of stack
  1453.         05h keyboard for current task
  1454.     STACK: DWORD flags (see #0372,#0373)
  1455. Return: STACK popped
  1456. Notes:    only available if the API level has been set to at least 2.20
  1457.     equivalent to performing SUBFROM and ADDTO calls on the object
  1458.     if a mailbox has bits 4 or 5 set, you must use "READINTO" rather than
  1459.       "READ" (see AH=12h/BH=13h"READINTO") to retrieve messages
  1460. SeeAlso: AH=12h/BH=0Ah,AH=12h/BH=0Bh,AH=12h/BH=16h
  1461.  
  1462. Bitfields for DESQview mailbox object flags:
  1463. Bit(s)    Description    (Table 0372)
  1464.  0    all mail messages in common memory
  1465.  1    allow write even if closed
  1466.  2    don't erase messages when mailbox closed
  1467.  4    (DV/X) append messages with like status and sender (stream-oriented
  1468.       mail)
  1469.  5    (DV/X) store mail in expanded memory (pool grows as needed)
  1470.  6    (DV/X) make mailbox into non-owned mailbox
  1471.  
  1472. Bitfields for DESQview keyboard object flags:
  1473. Bit(s)    Description    (Table 0373)
  1474.  5    exclusive input when keyboard in use for input
  1475. --------Q-1512--BH16-------------------------
  1476. INT 15 - DESQview v2.20+ - SEND MESSAGE - "GETFLAGS" - GET OBJECT FLAGS
  1477.     AH = 12h
  1478.     BH = 16h
  1479.     BL = object
  1480.         00h DWORD on top of stack
  1481.         mailbox, keyboard, or pointer only
  1482.         02h mailbox for task whose handle is on top of stack
  1483.         03h mailbox for current task
  1484.         04h keyboard for task whose handle is on top of stack
  1485.         05h keyboard for current task
  1486. Return: STACK: DWORD current control flags (see #0372,#0373)
  1487. Notes:    only available if the API level has been set to at least 2.20
  1488.     if a mailbox has bits 4 or 5 set, you must use "READINTO" rather than
  1489.       "READ" (see AH=12h/BH=13h"READINTO") to retrieve messages
  1490. SeeAlso: AH=12h/BH=0Ah,AH=12h/BH=0Bh,AH=12h/BH=13h"READINTO",AH=12h/BH=15h
  1491. --------Q-1512--BH17-------------------------
  1492. INT 15 - DESQview v2.42-2.52 - BUG
  1493.     AH = 12h
  1494.     BH = 17h
  1495.     BL = object
  1496.         00h DWORD on top of stack
  1497.         mailbox, keyboard, or pointer only
  1498.         02h mailbox for task whose handle is on top of stack
  1499.         03h mailbox for current task
  1500.         04h keyboard for task whose handle is on top of stack
  1501.         05h keyboard for current task
  1502. Return: STACK popped if handle passed on stack
  1503. Notes:    due to a fencepost error, message 17h is accepted for mailboxes,
  1504.       keyboards, and pointers, but causes a random branch
  1505.     DESQview v2.50-2.52 are distributed as part of DESQview/X v1.02
  1506. --------Q-1512--BH80-------------------------
  1507. INT 15 - DESQview v2.50+ - SEND MESSAGE 00h WITH ERROR RECOVERY
  1508.     AH = 12h
  1509.     BH = 80h
  1510. Note:    this function is identical to AH=12h/BH=00h, except that DESQview will
  1511.       not pop up a "Programming Error" window, instead returning an error
  1512.       code in AL (see #0374)
  1513. SeeAlso: AH=12h/BH=00h
  1514.  
  1515. (Table 0374)
  1516. Values for DESQview error code:
  1517.  00h    no error
  1518.  01h    invalid values
  1519.  02h    alias invalid
  1520.  03h    handle valid but wrong type
  1521.  04h    invalid handle
  1522. --------Q-1512--BH81-------------------------
  1523. INT 15 - DESQview v2.50+ - SEND MESSAGE 01h WITH ERROR RECOVERY
  1524.     AH = 12h
  1525.     BH = 81h
  1526. Note:    this function is identical to AH=12h/BH=01h, except that DESQview will
  1527.       not pop up a "Programming Error" window, instead returning an error
  1528.       code in AL (see #0374)
  1529. SeeAlso: AH=12h/BH=01h
  1530. --------Q-1512--BH82-------------------------
  1531. INT 15 - DESQview v2.50+ - SEND MESSAGE 02h WITH ERROR RECOVERY
  1532.     AH = 12h
  1533.     BH = 82h
  1534. Note:    this function is identical to AH=12h/BH=02h, except that DESQview will
  1535.       not pop up a "Programming Error" window, instead returning an error
  1536.       code in AL (see #0374)
  1537. SeeAlso: AH=12h/BH=02h
  1538. --------Q-1512--BH83-------------------------
  1539. INT 15 - DESQview v2.50+ - SEND MESSAGE 03h WITH ERROR RECOVERY
  1540.     AH = 12h
  1541.     BH = 83h
  1542. Note:    this function is identical to AH=12h/BH=03h, except that DESQview will
  1543.       not pop up a "Programming Error" window, instead returning an error
  1544.       code in AL (see #0374)
  1545. SeeAlso: AH=12h/BH=03h,AH=12h/BX=0300h
  1546. --------Q-1512--BH84-------------------------
  1547. INT 15 - DESQview v2.50+ - SEND MESSAGE 04h WITH ERROR RECOVERY
  1548.     AH = 12h
  1549.     BH = 84h
  1550. Note:    this function is identical to AH=12h/BH=04h, except that DESQview will
  1551.       not pop up a "Programming Error" window, instead returning an error
  1552.       code in AL (see #0374)
  1553. SeeAlso: AH=12h/BH=04h,AH=12h/BX=0400h
  1554. --------Q-1512--BH85-------------------------
  1555. INT 15 - DESQview v2.50+ - SEND MESSAGE 05h WITH ERROR RECOVERY
  1556.     AH = 12h
  1557.     BH = 85h
  1558. Note:    this function is identical to AH=12h/BH=05h, except that DESQview will
  1559.       not pop up a "Programming Error" window, instead returning an error
  1560.       code in AL (see #0374)
  1561. SeeAlso: AH=12h/BH=05h
  1562. --------Q-1512--BH86-------------------------
  1563. INT 15 - DESQview v2.50+ - SEND MESSAGE 06h WITH ERROR RECOVERY
  1564.     AH = 12h
  1565.     BH = 86h
  1566. Note:    this function is identical to AH=12h/BH=06h, except that DESQview will
  1567.       not pop up a "Programming Error" window, instead returning an error
  1568.       code in AL (see #0374)
  1569. SeeAlso: AH=12h/BH=06h
  1570. --------Q-1512--BH87-------------------------
  1571. INT 15 - DESQview v2.50+ - SEND MESSAGE 07h WITH ERROR RECOVERY
  1572.     AH = 12h
  1573.     BH = 87h
  1574. Note:    this function is identical to AH=12h/BH=07h, except that DESQview will
  1575.       not pop up a "Programming Error" window, instead returning an error
  1576.       code in AL (see #0374)
  1577. SeeAlso: AH=12h/BH=07h
  1578. --------Q-1512--BH88-------------------------
  1579. INT 15 - DESQview v2.50+ - SEND MESSAGE 08h WITH ERROR RECOVERY
  1580.     AH = 12h
  1581.     BH = 88h
  1582. Note:    this function is identical to AH=12h/BH=08h, except that DESQview will
  1583.       not pop up a "Programming Error" window, instead returning an error
  1584.       code in AL (see #0374)
  1585. SeeAlso: AH=12h/BH=08h
  1586. --------Q-1512--BH89-------------------------
  1587. INT 15 - DESQview v2.50+ - SEND MESSAGE 09h WITH ERROR RECOVERY
  1588.     AH = 12h
  1589.     BH = 89h
  1590. Note:    this function is identical to AH=12h/BH=09h, except that DESQview will
  1591.       not pop up a "Programming Error" window, instead returning an error
  1592.       code in AL (see #0374)
  1593. SeeAlso: AH=12h/BH=09h
  1594. --------Q-1512--BH8A-------------------------
  1595. INT 15 - DESQview v2.50+ - SEND MESSAGE 0Ah WITH ERROR RECOVERY
  1596.     AH = 12h
  1597.     BH = 8Ah
  1598. Note:    this function is identical to AH=12h/BH=0Ah, except that DESQview will
  1599.       not pop up a "Programming Error" window, instead returning an error
  1600.       code in AL (see #0374)
  1601. SeeAlso: AH=12h/BH=0Ah
  1602. --------Q-1512--BH8B-------------------------
  1603. INT 15 - DESQview v2.50+ - SEND MESSAGE 0Bh WITH ERROR RECOVERY
  1604.     AH = 12h
  1605.     BH = 8Bh
  1606. Note:    this function is identical to AH=12h/BH=0Bh, except that DESQview will
  1607.       not pop up a "Programming Error" window, instead returning an error
  1608.       code in AL (see #0374)
  1609. SeeAlso: AH=12h/BH=0Bh
  1610. --------Q-1512--BH8C-------------------------
  1611. INT 15 - DESQview v2.50+ - SEND MESSAGE 0Ch WITH ERROR RECOVERY
  1612.     AH = 12h
  1613.     BH = 8Ch
  1614. Note:    this function is identical to AH=12h/BH=0Ch, except that DESQview will
  1615.       not pop up a "Programming Error" window, instead returning an error
  1616.       code in AL (see #0374)
  1617. SeeAlso: AH=12h/BH=0Ch
  1618. --------Q-1512--BH8D-------------------------
  1619. INT 15 - DESQview v2.50+ - SEND MESSAGE 0Dh WITH ERROR RECOVERY
  1620.     AH = 12h
  1621.     BH = 8Dh
  1622. Note:    this function is identical to AH=12h/BH=0Dh, except that DESQview will
  1623.       not pop up a "Programming Error" window, instead returning an error
  1624.       code in AL (see #0374)
  1625. SeeAlso: AH=12h/BH=0Dh
  1626. --------Q-1512--BH8E-------------------------
  1627. INT 15 - DESQview v2.50+ - SEND MESSAGE 0Eh WITH ERROR RECOVERY
  1628.     AH = 12h
  1629.     BH = 8Eh
  1630. Note:    this function is identical to AH=12h/BH=0Eh, except that DESQview will
  1631.       not pop up a "Programming Error" window, instead returning an error
  1632.       code in AL (see #0374)
  1633. SeeAlso: AH=12h/BH=0Eh
  1634. --------Q-1512--BH8F-------------------------
  1635. INT 15 - DESQview v2.50+ - SEND MESSAGE 0Fh WITH ERROR RECOVERY
  1636.     AH = 12h
  1637.     BH = 8Fh
  1638. Note:    this function is identical to AH=12h/BH=0Fh, except that DESQview will
  1639.       not pop up a "Programming Error" window, instead returning an error
  1640.       code in AL (see #0374)
  1641. SeeAlso: AH=12h/BH=0Fh
  1642. --------Q-1512--BH90-------------------------
  1643. INT 15 - DESQview v2.50+ - SEND MESSAGE 10h WITH ERROR RECOVERY
  1644.     AH = 12h
  1645.     BH = 90h
  1646. Note:    this function is identical to AH=12h/BH=10h, except that DESQview will
  1647.       not pop up a "Programming Error" window, instead returning an error
  1648.       code in AL (see #0374)
  1649. SeeAlso: AH=12h/BH=10h
  1650. --------Q-1512--BH91-------------------------
  1651. INT 15 - DESQview v2.50+ - SEND MESSAGE 11h WITH ERROR RECOVERY
  1652.     AH = 12h
  1653.     BH = 91h
  1654. Note:    this function is identical to AH=12h/BH=11h, except that DESQview will
  1655.       not pop up a "Programming Error" window, instead returning an error
  1656.       code in AL (see #0374)
  1657. SeeAlso: AH=12h/BH=11h,AH=12h/BX=1100h
  1658. --------Q-1512--BH92-------------------------
  1659. INT 15 - DESQview v2.50+ - SEND MESSAGE 12h WITH ERROR RECOVERY
  1660.     AH = 12h
  1661.     BH = 92h
  1662. Note:    this function is identical to AH=12h/BH=12h, except that DESQview will
  1663.       not pop up a "Programming Error" window, instead returning an error
  1664.       code in AL (see #0374)
  1665. SeeAlso: AH=12h/BH=12h,AH=12h/BX=1200h
  1666. --------Q-1512--BH93-------------------------
  1667. INT 15 - DESQview v2.50+ - SEND MESSAGE 13h WITH ERROR RECOVERY
  1668.     AH = 12h
  1669.     BH = 93h
  1670. Note:    this function is identical to AH=12h/BH=13h, except that DESQview will
  1671.       not pop up a "Programming Error" window, instead returning an error
  1672.       code in AL (see #0374)
  1673. SeeAlso: AH=12h/BH=13h
  1674. --------Q-1512--BH94-------------------------
  1675. INT 15 - DESQview v2.50+ - SEND MESSAGE 14h WITH ERROR RECOVERY
  1676.     AH = 12h
  1677.     BH = 94h
  1678. Note:    this function is identical to AH=12h/BH=14h, except that DESQview will
  1679.       not pop up a "Programming Error" window, instead returning an error
  1680.       code in AL (see #0374)
  1681. SeeAlso: AH=12h/BH=14h
  1682. --------Q-1512--BH95-------------------------
  1683. INT 15 - DESQview v2.50+ - SEND MESSAGE 15h WITH ERROR RECOVERY
  1684.     AH = 12h
  1685.     BH = 95h
  1686. Note:    this function is identical to AH=12h/BH=15h, except that DESQview will
  1687.       not pop up a "Programming Error" window, instead returning an error
  1688.       code in AL (see #0374)
  1689. SeeAlso: AH=12h/BH=15h
  1690. --------Q-1512--BH96-------------------------
  1691. INT 15 - DESQview v2.50+ - SEND MESSAGE 16h WITH ERROR RECOVERY
  1692.     AH = 12h
  1693.     BH = 96h
  1694. Note:    this function is identical to AH=12h/BH=16h, except that DESQview will
  1695.       not pop up a "Programming Error" window, instead returning an error
  1696.       code in AL (see #0374)
  1697. SeeAlso: AH=12h/BH=16h
  1698. --------T-1513-------------------------------
  1699. INT 15 - VMiX - "sys_wake" - WAKE SLEEPING PROCESS
  1700.     AH = 13h
  1701.     STACK:    WORD    process ID
  1702. Return: AX = status (SYS_OK or SYS_ERROR)
  1703. SeeAlso: AH=12h"VMiX"
  1704. --------T-1513-------------------------------
  1705. INT 15 - MultiDOS Plus - GET TASK CONTROL BLOCK
  1706.     AH = 13h
  1707. Return: BX:AX -> task control block (see #0375)
  1708. SeeAlso: AH=15h"MultiDOS"
  1709.  
  1710. Format of MultiDOS Plus v4.0 task control block:
  1711. Offset    Size    Description    (Table 0375)
  1712.  00h    DWORD    pointer to next TCB
  1713.  04h  8 BYTEs    ASCIZ task name
  1714.  0Ch  2 BYTEs    ???
  1715.  0Eh    WORD    task PSP segment
  1716.  10h    WORD    abort/suspend flags
  1717.  12h    WORD    current screen segment (see AH=0Bh,AH=0Ch)
  1718.  14h    WORD    priority level (0000h-FFFEh)
  1719.  16h    WORD    time slice counter
  1720.  18h  2 BYTEs    ???
  1721.  1Ah    WORD    suspend timer value
  1722.  1Ch    WORD    stack segment
  1723.  1Eh    WORD    stack pointer
  1724.  20h    WORD    display type
  1725.  22h    WORD    display memory
  1726.  24h  2 BYTEs    ???
  1727.  26h    WORD    termination count
  1728.  28h    WORD    equipment flag for BIO10 driver
  1729.  2Ah    BYTE    background CRT mode
  1730.  2Bh    WORD    screen width in columns
  1731.  2Dh    WORD    screen size in bytes
  1732.  2Fh    WORD    segment of physical screen memory
  1733.  31h 16 BYTEs    eight cursor positions
  1734.  41h    WORD    current cursor shape
  1735.  43h    BYTE    active display page
  1736.  44h    WORD    CRT controller I/O port base
  1737.  46h  2 BYTEs    ???
  1738.  48h    WORD    foreground task flag
  1739.  4Ah  6 BYTEs    ???
  1740.  50h    WORD    saved video segment (see AH=0Bh,AH=0Ch)
  1741.  52h    DWORD    old INT 22
  1742.  56h    DWORD    old INT 23
  1743.  5Ah    DWORD    old INT 24
  1744.  5Eh    WORD    top of memory for task
  1745.  60h  4 BYTEs    ???
  1746.  64h    WORD    DTA segment (see INT 21/AH=1Ah)
  1747.  66h    WORD    DTA offset
  1748.  68h  4 BYTEs    ???
  1749.  6Ch    BYTE    current ANSI.SYS attribute
  1750.  6Dh    BYTE    current ANSI.SYS column
  1751.  6Eh    BYTE    current ANSI.SYS row
  1752.  6Fh    BYTE    current ANSI.SYS display state
  1753.  70h    BYTE    maximum ANSI.SYS columns
  1754.  71h    BYTE    current ANSI.SYS page
  1755.  72h    WORD    saved ANSI.SYS cursor position
  1756.  74h    BYTE    ANSI.SYS parameter buffer index
  1757.  75h    BYTE    current ANSI.SYS screen mode
  1758.  76h    BYTE    ANSI.SYS wrap flag
  1759.  77h  6 BYTEs    ANSI.SYS parameter buffer
  1760.  7Dh    BYTE    ANSI.SYS keyboard DSR state
  1761.  7Eh  7 BYTEs    ANSI.SYS keyboard DSR buffer
  1762.  85h  3 BYTEs    ???
  1763.  88h 16 BYTEs    request header for DOS driver calls
  1764.  98h 14 BYTEs    ???
  1765.  A6h    WORD    segment of EMS map if EMS task
  1766.  A8h    WORD    flag: task makes EMS calls
  1767.  AAh    WORD    EMS handle for task
  1768.  ACh    WORD    keyboard shift state
  1769.  AEh 12 BYTEs    ???
  1770.  BAh    WORD    TCB of parent if child task
  1771.  BCh    WORD    termination code
  1772.  BEh    WORD    COM port number
  1773.  C0h  4 BYTEs    ???
  1774.  C4h    WORD    current IRQ number
  1775.  C6h  2 BYTEs    ???
  1776.  C8h    WORD    miscellaneous flag word
  1777.  CAh  2 BYTEs    ???
  1778.  CCh    DWORD    old INT 10
  1779.  D0h    WORD    EMS alternate map set number
  1780.  D2h 414 BYTEs    DOS current disk and directory context (optional)
  1781. --------T-1514-------------------------------
  1782. INT 15 - VMiX - "sys_clrwindow" - CLEAR WINDOW
  1783.     AH = 14h
  1784.     STACK:    WORD    top left corner of window (high byte = row, low = col)
  1785.         WORD    bottom right corner of window (high = row, low = col)
  1786. Return: AX = status (SYS_OK)
  1787. Note:    clears window to color set with "sys_setcolors" (AH=18h)
  1788. SeeAlso: AH=15h"VMiX",AH=16h"VMiX",AH=18h"VMiX",AH=1Fh"VMiX"
  1789. --------T-1514-------------------------------
  1790. INT 15 - MultiDOS Plus - CHECK IF MultiDOS FOREGROUND OR BACKGROUND
  1791.     AH = 14h
  1792. Return: AX = current state
  1793.         0000h MultiDOS Plus command prompt is background task
  1794.         0001h command prompt is foreground task
  1795. SeeAlso: AH=0Bh"MultiDOS"
  1796. --------T-1515-------------------------------
  1797. INT 15 - VMiX - "sys_setbwindow" - SET BANNER WINDOW MESSAGE
  1798.     AH = 15h
  1799.     STACK:    DWORD    pointer to ASCIZ banner message for top of screen
  1800. Return: AX = status (SYS_OK)
  1801. SeeAlso: AH=14h"VMiX",AH=16h"VMiX"
  1802. --------T-1515-------------------------------
  1803. INT 15 - MultiDOS Plus - GET SYSTEM BLOCK
  1804.     AH = 15h
  1805. Return: BX:AX -> system block (see #0376)
  1806. SeeAlso: AH=13h"MultiDOS"
  1807.  
  1808. Format of MultiDOS Plus 4.0 system block:
  1809. Offset    Size    Description    (Table 0376)
  1810.  00h    WORD    segment of system control block
  1811.  02h    WORD    redirection flag set by /NOREDIRECT
  1812.  04h    WORD    no-INT 10 flag set by /NO10
  1813.  06h    DWORD    old INT 10
  1814.  0Ah    DWORD    new INT 10
  1815.  0Eh    DWORD    pointer to WORD with current TCB offset (see #0375)
  1816.  12h    DWORD    pointer to WORD with idle task TCB offset
  1817.  16h    DWORD    pointer to WORD with foreground TCB offset (see #0375)
  1818.  1Ah    DWORD    pointer to WORD with MultiDOS TCB offset (see #0375)
  1819.  1Eh    WORD    Task Control Block size
  1820.  20h    WORD    number of TCBs
  1821.  22h    WORD    flag: EMS present
  1822.  24h    WORD    EMS page frame base segment
  1823.  26h    WORD    16K pages in EMS page frame
  1824.  28h    WORD    base segment for conventional memory tasks
  1825.  2Ah    WORD    conventional memory size in paragraphs
  1826.  2Ch    DWORD    pointer to list of queue pointers
  1827. --------T-1516-------------------------------
  1828. INT 15 - VMiX - "sys_setwindow" - SET ROOT WINDOW SIZE AND HOME CURSOR
  1829.     AH = 16h
  1830.     STACK:    DWORD    pointer to I/O Request Packet
  1831.         WORD    top left corner of window (high byte = row, low = col)
  1832.         WORD    bottom right corner of window (high = row, low = col)
  1833. Return: AX = status (SYS_OK or SYS_ERROR)
  1834. SeeAlso: AH=14h"VMiX",AH=17h"VMiX"
  1835. --------T-1516-------------------------------
  1836. INT 15 - MultiDOS Plus - INITIALIZATION
  1837.     AH = 16h
  1838. Note:    used internally during initialization; any other calls will cause
  1839.       unpredictable results
  1840. --------T-1517-------------------------------
  1841. INT 15 - VMiX - "sys_getcolors" - GET CONSOLE WINDOW COLORS
  1842.     AH = 17h
  1843. Return: AH = foreground color
  1844.     AL = background color
  1845. SeeAlso: AH=16h"VMiX",AH=18h"VMiX"
  1846. --------T-1517-------------------------------
  1847. INT 15 - MultiDOS Plus - MAP IRQ
  1848.     AH = 17h
  1849.     AL = IRQ to map (01h-0Fh)
  1850.     BX = offset of task control block (see #0375) to associate with IRQ
  1851. Return: AX = status
  1852.         0000h successful
  1853.         other invalid IRQ
  1854. Note:    the EMS map of the specified TCB is associated with the given interrupt
  1855. SeeAlso: AH=18h"MultiDOS",AH=19h"MultiDOS"
  1856. --------T-1518-------------------------------
  1857. INT 15 - VMiX - "sys_setcolors" - SET CONSOLE COLORS
  1858.     AH = 18h
  1859.     STACK:    WORD    new background/foreground colors
  1860.             bits 3-0: foreground
  1861.             bits 7-4: background
  1862.             bits 15-8: unused
  1863. Return: AX = color
  1864. SeeAlso: AH=14h"VMiX",AH=17h"VMiX",AH=19h"VMiX"
  1865. --------T-1518-------------------------------
  1866. INT 15 - MultiDOS Plus - UNMAP IRQ
  1867.     AH = 18h
  1868.     AL = IRQ to unmap (01h-0Fh)
  1869. Return: AX = status
  1870.         0000h successful
  1871.         0001h invalid IRQ
  1872. Note:    results are unpredictable if the IRQ has not been mapped
  1873. SeeAlso: AH=17h"MultiDOS",AH=19h"MultiDOS"
  1874. --------T-1519-------------------------------
  1875. INT 15 - VMiX v2+ - "sys_setconwn" - SET WINDOW COLORS
  1876.     AH = 19h
  1877.     STACK:    WORD    new background/foreground colors
  1878.             bits 3-0: foreground
  1879.             bits 7-4: background
  1880.             bits 15-8: unused
  1881. Return: AX = color
  1882. SeeAlso: AH=18h"VMiX"
  1883. --------T-1519-------------------------------
  1884. INT 15 - MultiDOS Plus - UNMAP ALL IRQs
  1885.     AH = 19h
  1886. Return: AX destroyed
  1887. Note:    for MultiDOS internal use only
  1888. SeeAlso: AH=17h"MultiDOS",AH=18h"MultiDOS"
  1889. --------T-151A-------------------------------
  1890. INT 15 - VMiX v2+ - "sys_sint" - INVOKE SOFTWARE INTERRUPT
  1891.     AH = 1Ah
  1892.     STACK:    WORD    interrupt number
  1893.         DWORD    pointer to register structure
  1894. Return: AX = returned flags
  1895. --------T-151A-------------------------------
  1896. INT 15 - MultiDOS Plus - MAP SEMAPHORE NAME TO NUMBER
  1897.     AH = 1Ah
  1898.     DS:SI -> 8-byte name
  1899. Return: AL = status
  1900.         00h successful
  1901.         AH = semaphore number (20h-3Fh)
  1902.         04h out of string space
  1903. Notes:    all eight bytes of the name are significant
  1904.     if the name does not already exist, it is added to the name table and
  1905.       associated with a free semaphore number
  1906.     names cannot be destroyed
  1907. SeeAlso: AH=1Bh"MultiDOS",AH=1Ch"MultiDOS",AH=1Dh"MultiDOS"
  1908. --------T-151B-------------------------------
  1909. INT 15 - VMiX v2+ - "sys_blkmov" - MOVE MEMORY BLOCK
  1910.     AH = 1Bh
  1911.     STACK:    DWORD    source address
  1912.         DWORD    destination address
  1913.         WORD    number of words to move
  1914. Return: nothing
  1915. --------T-151B-------------------------------
  1916. INT 15 - MultiDOS Plus - REQUEST RESOURCE SEMAPHORE BY NAME
  1917.     AH = 1Bh
  1918.     DS:SI -> 8-byte name
  1919. Return: AH = status
  1920.         00h successful
  1921.         02h invalid semaphore number
  1922.         03h caller already owns semaphore
  1923.         04h out of string space
  1924. Notes:    (see AH=01h"MultiDOS")
  1925.     equivalent to AH=1Ah followed by AH=01h
  1926. SeeAlso: AH=01h"MultiDOS",AH=1Ah"MultiDOS",AH=1Ch"MultiDOS",AH=1Dh"MultiDOS"
  1927. --------T-151C-------------------------------
  1928. INT 15 - VMiX v2+ - "sys_bitblt" - PUT GRAPHICAL OBJECT AT CURSOR POSITION
  1929.     AH = 1Ch
  1930.     STACK:    WORD    AND/OR pixel with background (00h = OR, 01h = AND)
  1931.         DWORD    pointer to object bitmap
  1932.         WORD    object width in pixels
  1933.         WORD    object height in pixels
  1934. Return: nothing
  1935. SeeAlso: AH=1Dh"VMiX"
  1936. --------T-151C-------------------------------
  1937. INT 15 - MultiDOS Plus - RELEASE RESOURCE SEMAPHORE BY NAME
  1938.     AH = 1Ch
  1939.     DS:SI -> 8-byte name
  1940. Return: AH = status
  1941.         00h successful
  1942.         01h not semaphore owner
  1943.         02h invalid semaphore number
  1944.         04h out of string space
  1945. Notes:    (see AH=02h"MultiDOS")
  1946.     equivalent to AH=1Ah followed by AH=02h
  1947. SeeAlso: AH=02h"MultiDOS",AH=1Ah"MultiDOS",AH=1Bh"MultiDOS",AH=1Dh"MultiDOS"
  1948. --------T-151D-------------------------------
  1949. INT 15 - VMiX v2+ - "sys_getfont" - GET CURRENT CONSOLE GRAPHICS FONT
  1950.     AH = 1Dh
  1951. Return: AX = current font number (00h-03h)
  1952. SeeAlso: AH=1Ch"VMiX",AH=1Eh"VMiX"
  1953. --------T-151D-------------------------------
  1954. INT 15 - MultiDOS Plus - TEST RESOURCE SEMAPHORE BY NAME
  1955.     AH = 1Dh
  1956.     DS:SI -> 8-byte name
  1957. Return: AH = status
  1958.         00h semaphore not in use
  1959.         01h semaphore owned by another task
  1960.         02h invalid semaphore number
  1961.         03h caller owns semaphore
  1962.         04h out of string space
  1963. Notes:    (see AH=10h"MultiDOS")
  1964.     equivalent to AH=1Ah followed by AH=10h
  1965. SeeAlso: AH=10h"MultiDOS",AH=1Ah"MultiDOS",AH=1Bh"MultiDOS",AH=1Ch"MultiDOS"
  1966. --------T-151E-------------------------------
  1967. INT 15 - VMiX v2+ - "sys_setfont" - SET CONSOLE GRAPHICS FONT
  1968.     AH = 1Eh
  1969.     STACK: WORD new font number (00h-03h)
  1970. Return: AX = current font number (00h-03h)
  1971. SeeAlso: AH=1Dh"VMiX"
  1972. --------T-151E00-----------------------------
  1973. INT 15 - MultiDOS Plus - CLEAR EVENT COUNTER
  1974.     AX = 1E00h
  1975.     DX = event/trigger number (00h-3Fh)
  1976. Return: AH = status
  1977.         00h successful
  1978. SeeAlso: AX=1E01h,AX=1E02h
  1979. --------T-151E01-----------------------------
  1980. INT 15 - MultiDOS Plus - TRIGGER EVENT
  1981.     AX = 1E01h
  1982.     DX = event/trigger number (00h-3Fh)
  1983. Return: AH = status
  1984.         00h successful
  1985.         01h invalid event/trigger number
  1986. Notes:    schedules any task waiting for event; if no task is waiting, the event
  1987.       counter is incremented (and will roll over if it was 65535)
  1988.     may be invoked by interrupt handler
  1989. SeeAlso: AX=1E00h,AX=1E02h
  1990. --------T-151E02-----------------------------
  1991. INT 15 - MultiDOS Plus - WAIT FOR EVENT
  1992.     AX = 1E02h
  1993.     DX = event/trigger number (00h-3Fh)
  1994. Return: AH = status
  1995.         00h successful
  1996.         01h invalid event/trigger number
  1997. Note:    if the event counter is zero, the task is suspended until the event is
  1998.       triggered with AX=1E01h; else, the counter is decremented and the
  1999.       call returns immediately
  2000. SeeAlso: AX=1E00h,AX=1E01h
  2001. --------T-151E08-----------------------------
  2002. INT 15 - MultiDOS Plus 4.01 - SET CONTEXT-SWITCH FUNCTIONS
  2003.     AX = 1E08h
  2004.     DX:BX -> context save handler (see #0377)
  2005.     DX:CX -> context restore handler (see #0377)
  2006. Return: nothing
  2007. Note:    handlers may be removed by setting addresses to 0000h:0000h
  2008.  
  2009. (Table 0377)
  2010. Values MultiDOS Plus context-switch handlers are called with:
  2011.     ES:BX -> task's TCB
  2012. Return: all registers preserved
  2013. --------T-151F-------------------------------
  2014. INT 15 - VMiX v2.???+ - "sys_scrollwin" - SCROLL WINDOW
  2015.     AH = 1Fh
  2016.     STACK:    WORD    top left corner of window (high byte = row, low = col)
  2017.         WORD    bottom right corner of window
  2018. Return: AX = status (SYS_OK)
  2019. SeeAlso: AH=14h"VMiX",AH=18h"VMiX"
  2020. --------T-151F-------------------------------
  2021. INT 15 - MultiDOS Plus v4.01 - GET MEMORY PARAMETERS
  2022.     AH = 1Fh
  2023. Return: BX = first segment of conventional memory
  2024.     DX = first segment of EMS swap frame into which MultiDOS will load
  2025.         programs
  2026. --------T-1520-------------------------------
  2027. INT 15 - MultiDOS Plus v4.01 - CHECK IF MULTITASKING ENABLED
  2028.     AH = 20h
  2029. Return: AX = current state
  2030.         0000h multitasking enabled
  2031.         other TCB of task that disabled multitasking
  2032. SeeAlso: AH=0Dh"MultiDOS",AH=13h"MultiDOS"
  2033. --------c-152000-----------------------------
  2034. INT 15 U - DOS 3.0+ PRINT.COM - DISABLE CRITICAL REGION FLAG
  2035.     AX = 2000h
  2036. Return: nothing
  2037. Desc:    stop setting user flag on entry to PRINT critical region
  2038. Note:    also supported by PC Network v1.00 RECEIVER.COM
  2039. SeeAlso: AX=2001h
  2040. --------c-152001-----------------------------
  2041. INT 15 U - DOS 3.0+ PRINT.COM - SET CRITICAL REGION FLAG
  2042.     AX = 2001h
  2043.     ES:BX -> byte which is to be incremented while in a DOS call
  2044. Return: nothing
  2045. Desc:    specify a user flag which PRINT should set to let an interested
  2046.       application know it is in a critical region
  2047. Note:    also supported by PC Network v1.00 RECEIVER.COM
  2048. SeeAlso: AX=2000h
  2049. --------O-152010-----------------------------
  2050. INT 15 - OS HOOK - SETUP SYSREQ ROUTINE (AT,XT286,PS50+)
  2051.     AX = 2010h
  2052.     ???
  2053. Return: ???
  2054. SeeAlso: AX=2011h
  2055. --------O-152011-----------------------------
  2056. INT 15 - OS HOOK - COMPLETION OF SYSREQ FUNCTION (AT,XT286,PS50+)
  2057.     AX = 2011h
  2058.     ???
  2059. Return: ???
  2060. SeeAlso: AX=2010h
  2061. --------B-1521-------------------------------
  2062. INT 15 - SYSTEM - POWER-ON SELF-TEST ERROR LOG (PS50+)
  2063.     AH = 21h
  2064.     AL = subfunction
  2065.         00h read POST log
  2066.         01h write POST log
  2067.         BH = device ID
  2068.         BL = error code
  2069. Return: CF clear if successful
  2070.     CF set on error
  2071.     AH = status
  2072.         00h OK
  2073.         01h list full
  2074.         02h unsupported subfunction
  2075.         80h invalid command
  2076.         86h unsupported function
  2077.     if function 00h:
  2078.        BX = number of error codes stored
  2079.        ES:DI -> error log
  2080. Notes:    the log is a series of words, the first byte of which identifies the
  2081.       error code and the second the device.
  2082.     supported by AMI PCI BIOS
  2083.     IBM considers this a required BIOS function
  2084.     if the device ID is FFh, the "error code" is the actual device number
  2085.       minus 255 (thus these devices have no specific error codes)
  2086. SeeAlso: AH=23h"SYSTEM",AH=24h"SYSTEM"
  2087. --------B-1522-------------------------------
  2088. INT 15 - SYSTEM - later PS/2s - LOCATE ROM BASIC
  2089.     AH = 22h
  2090. Return: CF set on error
  2091.         AH = status (86h if function not supported)
  2092.     CF clear on success
  2093.         AH = 00h
  2094.         ES:BX -> ROM BASIC
  2095. Notes:    if this function is not supported, ROM BASIC is at F600h:0000h
  2096.     IBM classifies this function as optional
  2097. SeeAlso: INT 86"BASIC",INT F0"BASIC"
  2098. --------B-152300-----------------------------
  2099. INT 15 u - IBM BIOS - SMART ENERGY SYSTEM - GET ??? CMOS DATA
  2100.     AX = 2300h
  2101. Return: CF clear if successful
  2102.         CL = value of CMOS location 2Dh
  2103.         CH = value of CMOS location 2Eh
  2104.     CF set on error
  2105.         AH = error code (80h,86h)
  2106. Note:    IBM classifies this function as optional
  2107. SeeAlso: AX=2301h,AX=2304h,AX=2305h
  2108. --------B-152301-----------------------------
  2109. INT 15 u - IBM BIOS - SMART ENERGY SYSTEM - SET ??? CMOS DATA
  2110.     AX = 2301h
  2111.     CL = new value for CMOS location 2Dh
  2112.     CH = new value for CMOS location 2Eh
  2113. Return: CF clear if successful
  2114.     CF set on error
  2115.         AH = error code (80h,86h)
  2116. Notes:    sets the contents of CMOS locations 2Dh and 2Eh
  2117.     IBM classifies this function as optional
  2118. SeeAlso: AX=2300h,AX=2304h,AX=2305h
  2119. --------B-152302-----------------------------
  2120. INT 15 u - IBM BIOS - SMART ENERGY SYSTEM - GET ROM STARTUP VIDEO REG TABLES
  2121.     AX = 2302h
  2122.     BL = data index (00h-0Dh) (see #0378)
  2123. Return: ES:BX -> table for register (see #0379,#0380)
  2124.     CX = size of table in bytes (may be 0000h)
  2125. Note:    IBM classifies this function as optional
  2126. SeeAlso: AX=2300h,AX=2301h,AX=2303h
  2127.  
  2128. (Table 0378)
  2129. Values for PS/1 ROM startup video register tables:
  2130.  00h    DAC registers
  2131.  01h    ???
  2132.  02h    Palette registers
  2133.  03h-0Dh ???
  2134.  
  2135. Format of PS/1 ROM startup DAC register table:
  2136. Offset    Size    Description    (Table 0379)
  2137.  00h    WORD    number of DAC registers in table
  2138.  02h    var    array of 3-byte DAC register values, starting at register 00h
  2139. SeeAlso: #0378
  2140.  
  2141. Format of PS/1 ROM startup Palette register table:
  2142. Offset    Size    Description    (Table 0380)
  2143.  00h 16 BYTEs    colors for palette registers 00h through 0Fh
  2144.  10h    BYTE    border color
  2145. SeeAlso: #0378,#0017
  2146. --------B-152303-----------------------------
  2147. INT 15 U - IBM BIOS - SMART ENERGY SYSTEM - ???
  2148.     AX = 2303h
  2149.     BX = ??? ('x')
  2150.     DX = 'y' and 'z'
  2151.         bits 15-7 = 'y'
  2152.         bits 6-3 unused
  2153.         bits 2-0 = 'z'
  2154.     DI = ??? (0352h)
  2155. Return: ???
  2156. Notes:    performs graphics functions, writes to segment A000h and VGA I/O ports
  2157.     IBM classifies this function as optional
  2158. --------B-152304-----------------------------
  2159. INT 15 u - IBM BIOS - SMART ENERGY SYSTEM - SYSTEM SETUP
  2160.     AX = 2304h
  2161.     DX = segment of 32K buffer
  2162. Return: CF clear if successful
  2163.         AX = 0003h (left over from setting video mode 3)
  2164.         BX,CX,DX,BP,DS,ES destroyed
  2165.     CF set on error
  2166.         AH = error code (80h,86h)
  2167. Desc:    run system setup utility, and optionally save any changed settings to
  2168.       CMOS RAM
  2169. Note:    IBM classifies this function as optional
  2170. SeeAlso: AX=2301h,AX=2305h
  2171. --------B-152305-----------------------------
  2172. INT 15 u - IBM BIOS - SMART ENERGY SYSTEM - GET PROCESSOR SPEED
  2173.     AX = 2305h
  2174. Return: CF clear if successful
  2175.         AL = processor speed in MHz
  2176.     CF set on error
  2177.         AL = FFh (speed unknown or >80 MHz)
  2178.         AL = error code (80h,86h = unsupported function)
  2179. Note:    IBM classifies this function as optional
  2180. SeeAlso: AX=2301h,AX=2304h,AH=BCh
  2181. --------b-152400-----------------------------
  2182. INT 15 - SYSTEM - later PS/2s - DISABLE A20 GATE
  2183.     AX = 2400h
  2184. Return: CF clear if successful
  2185.         AH = 00h
  2186.     CF set on error
  2187.         AH = status
  2188.         01h keyboard controller is in secure mode
  2189.         86h function not supported
  2190. Notes:    also supported by AMI PCI BIOS and Qualitas 386MAX v6.01+
  2191.     IBM classifies this function as optional
  2192. BUG:    AMI BIOS v1.00.03.AV0M never reports an error on failure to disable
  2193.       the A20 gate; it simply writes 0 to PORT 0092h
  2194. SeeAlso: AX=2401h,AX=2402h,AX=2403h,PORT 0092h
  2195. --------b-152401-----------------------------
  2196. INT 15 - SYSTEM - later PS/2s - ENABLE A20 GATE
  2197.     AX = 2401h
  2198. Return: CF clear if successful
  2199.         AH = 00h
  2200.     CF set on error
  2201.         AH = status
  2202.         01h keyboard controller is in secure mode
  2203.         86h function not supported
  2204. Notes:    also supported by AMI PCI BIOS and Qualitas 386MAX v6.01+
  2205.     IBM classifies this function as optional
  2206. SeeAlso: AX=2400h,AX=2402h,PORT 0092h
  2207. --------b-152402-----------------------------
  2208. INT 15 - SYSTEM - later PS/2s - GET A20 GATE STATUS
  2209.     AX = 2402h
  2210. Return: CF clear if successful
  2211.         AH = 00h
  2212.         AL = current state (00h disabled, 01h enabled)
  2213.         CX = ??? (set to 0000h-000Bh or FFFFh by AMI BIOS v1.00.03.AV0M)
  2214.         FFFFh if keyboard controller does not become ready within C000h
  2215.              read attempts
  2216.     CF set on error
  2217.         AH = status
  2218.         01h keyboard controller is in secure mode
  2219.         86h function not supported
  2220. Notes:    also supported by AMI PCI BIOS and Qualitas 386MAX v6.01+
  2221.     IBM classifies this function as optional
  2222. SeeAlso: AX=2400h,AX=2401h
  2223. --------b-152403-----------------------------
  2224. INT 15 - SYSTEM - later PS/2s - QUERY A20 GATE SUPPORT
  2225.     AX = 2403h
  2226. Return: CF clear if successful
  2227.         AH = 00h
  2228.         BX = status of A20 gate support (see #0381)
  2229.     CF set on error
  2230.         AH = status
  2231.         01h keyboard controller is in secure mode
  2232.         86h function not supported
  2233. Notes:    also supported by AMI PCI BIOS and Qualitas 386MAX v6.01+
  2234.     IBM classifies this function as optional
  2235. BUG:    at one point early in processing INT 15/AH=24h, the AMI PCI BIOS
  2236.       version 1.00.05.AX1 compares whether AL==03h instead of AL>=03h,
  2237.       thus causing a random branch on any value of AL greater than 3.
  2238. SeeAlso: AX=2402h
  2239.  
  2240. Bitfields for A20 gate support status:
  2241. Bit(s)    Description    (Table 0381)
  2242.  0    supported on keyboard controller
  2243.  1    supported with bit 1 of I/O port 92h
  2244.  14-2    reserved
  2245.  15    additional data is available (location not yet defined)
  2246. --------T-153000-----------------------------
  2247. INT 15 - Object Kernel for DOS - INSTALLATION CHECK
  2248.     AX = 3000h
  2249. Return: AX:BX = 4F42h:4A21h ('OBJ!') if installed
  2250.         CX = resident segment
  2251. Program: the Object Kernel is a program by M.W. Pieters which is currently
  2252.       under development
  2253. Note:    Central Point's CPBACKUP v9 calls INT 15/AX=3000h at startup, but it
  2254.       may be checking for a different program's presence
  2255. SeeAlso: AX=3001h,AX=3008h
  2256. --------T-153001-----------------------------
  2257. INT 15 - Object Kernel for DOS - GET STATUS BLOCK
  2258.     AX = 3001h
  2259. Return: AX = FFFFh
  2260.     ES:DI -> status block
  2261. SeeAlso: AX=3000h,AX=3008h
  2262. --------T-153002-----------------------------
  2263. INT 15 - Object Kernel for DOS - KILL PROCESS
  2264.     AX = 3002h
  2265.     (not yet implemented)
  2266. SeeAlso: AX=3000h
  2267. --------T-153003-----------------------------
  2268. INT 15 - Object Kernel for DOS - STOP PROCESS
  2269.     AX = 3003h
  2270.     (not yet implemented)
  2271. SeeAlso: AX=3000h
  2272. --------T-153004-----------------------------
  2273. INT 15 - Object Kernel for DOS - START PROCESS
  2274.     AX = 3004h
  2275.     (not yet implemented)
  2276. SeeAlso: AX=3000h
  2277. --------T-153005-----------------------------
  2278. INT 15 - Object Kernel for DOS - RESTART PROCESS
  2279.     AX = 3005h
  2280.     (not yet implemented)
  2281. SeeAlso: AX=3000h
  2282. --------T-153006-----------------------------
  2283. INT 15 - Object Kernel for DOS - EXECUTE PROCESS
  2284.     AX = 3006h
  2285.     (not yet implemented)
  2286. SeeAlso: AX=3000h
  2287. --------T-153007-----------------------------
  2288. INT 15 - Object Kernel for DOS - LIST PROCESSES
  2289.     AX = 3007h
  2290.     (not yet implemented)
  2291. SeeAlso: AX=3000h
  2292. --------T-153008-----------------------------
  2293. INT 15 - Object Kernel for DOS - SWITCH ObjectKernel ON/OFF
  2294.     AX = 3008h
  2295.     BH = new state (00h disabled, 01h enabled)
  2296. Return: AX = FFFFh
  2297. SeeAlso: AX=3000h,AX=3009h
  2298. --------T-153009-----------------------------
  2299. INT 15 - Object Kernel for DOS - RESERVED FOR FUTURE USE
  2300.     AX = 3009h to 30FFh
  2301. SeeAlso: AX=3000h
  2302. Program: the Object Kernel is a program by M.W. Pieters which is currently
  2303.       under development
  2304. ----------153D-------------------------------
  2305. INT 15 - IBM SurePath BIOS - Officially "Private" Function
  2306.     AH = 3Dh
  2307. SeeAlso: AH=07h"IBM",AH=3Eh"IBM"
  2308. ----------153E-------------------------------
  2309. INT 15 - IBM SurePath BIOS - Officially "Private" Function
  2310.     AH = 3Eh
  2311. SeeAlso: AH=3Dh"IBM",AH=3Fh"IBM"
  2312. ----------153F-------------------------------
  2313. INT 15 - IBM SurePath BIOS - Officially "Private" Function
  2314.     AH = 3Fh
  2315. SeeAlso: AH=07h"IBM",AH=3Eh"IBM"
  2316. --------B-1540-------------------------------
  2317. INT 15 - SYSTEM - READ/MODIFY PROFILES (CONVERTIBLE)
  2318.     AH = 40h
  2319.     AL = subfunction
  2320.         00h get system profile in CX and BX
  2321.         01h set system profile from CX and BX
  2322.         02h get internal modem profile in BX
  2323.         03h set internal modem profile from BX
  2324. Return: CF clear if successful
  2325.         AH = 00h
  2326.     CF set on error
  2327.         AH = status (80h = profile execution failed)
  2328. --------V-154000-----------------------------
  2329. INT 15 - Compaq SLT/286 or Portable 386 - READ LCD/PLASMA TIMEOUT
  2330.     AX = 4000h
  2331. Return: AX = 4000h
  2332.     CL = timeout in minutes, 00h if disabled
  2333. SeeAlso: AX=4001h,AX=4600h
  2334. --------V-154001-----------------------------
  2335. INT 15 - Compaq SLT/286 or Portable 386 - SET LCD/PLASMA TIMEOUT
  2336.     AX = 4001h
  2337.     CL = timeout in minutes, 00h to disable
  2338. Return: AL = status
  2339.         00h timeout modified
  2340.         01h timeout cannot be modified
  2341.         40h timeout cannot be modified
  2342.     CL = timeout in minutes, 00h if disabled
  2343. SeeAlso: AX=4000h,AX=4601h
  2344. --------B-1541-------------------------------
  2345. INT 15 - SYSTEM - WAIT ON EXTERNAL EVENT (CONVERTIBLE and some others)
  2346.     AH = 41h
  2347.     AL = condition type (see #0382)
  2348.     BH = condition compare or mask value
  2349.     BL = timeout value times 55 milliseconds
  2350.         00h means no timeout
  2351.     DX = I/O port address if AL bit 4 set
  2352.     ES:DI -> user byte if AL bit 4 clear
  2353. Return: after event or timeout occurs
  2354. Note:    call AH=C0h and examine bit 3 of feature byte 1 to determine whether
  2355.       this function is supported
  2356. SeeAlso: AH=83h,AH=86h,AH=C0h
  2357.  
  2358. Bitfields for external event wait condition type:
  2359. Bit(s)    Description    (Table 0382)
  2360.  0-2    condition to wait for
  2361.     0 any external event
  2362.     1 compare and return if equal
  2363.     2 compare and return if not equal
  2364.     3 test and return if not zero
  2365.     4 test and return if zero
  2366.  3    reserved
  2367.  4    1=port address, 0=user byte
  2368.  5-7    reserved
  2369. --------B-1542-------------------------------
  2370. INT 15 - SYSTEM - REQUEST POWER OFF (CONVERTIBLE,HP 95LX)
  2371.     AH = 42h
  2372.     AL = suspend type
  2373.         00h to use system profile
  2374.         01h to force suspend regardless of system profile
  2375. Return: nothing
  2376. Note:    the HP 95LX apparently suspends regardless of the value in AL; on
  2377.       power-up, execution will resume following the instruction calling
  2378.       this function
  2379. SeeAlso: AH=44h
  2380. --------b-154280-----------------------------
  2381. INT 15 - Compaq SLT/286 - ENTER STANDBY
  2382.     AX = 4280h
  2383. Return: AH = 42h
  2384.     CF clear if successful
  2385.     CF set if unable to enter standby
  2386. SeeAlso: AX=4600h,AX=5307h/CX=0001h"STAND-BY"
  2387. --------B-1543-------------------------------
  2388. INT 15 - SYSTEM - READ SYSTEM STATUS (CONVERTIBLE)
  2389.     AH = 43h
  2390. Return: AL = status bits (see #0383)
  2391.  
  2392. Bitfields for Convertible system status:
  2393. Bit(s)    Description    (Table 0383)
  2394.  7    power low
  2395.  6    external power in use
  2396.  5    standby power lost
  2397.  4    power activated by alarm
  2398.  3    internal modem powered on
  2399.  2    RS232/parallel adapter powered on
  2400.  1    reserved
  2401.  0    LCD detached
  2402. --------B-1544-------------------------------
  2403. INT 15 - SYSTEM - (DE)ACTIVATE INTERNAL MODEM POWER (CONVERTIBLE)
  2404.     AH = 44h
  2405.     AL = new modem power state (00h power off, 01h power on)
  2406. Return: nothing
  2407. SeeAlso: AH=42h
  2408. --------b-1544C0-----------------------------
  2409. INT 15 - Olivetti Quaderno - INITIALIZE DIGITAL SIGNAL PROCESSING???
  2410.     AX = 44C0h
  2411.     ES:DI -> new DSP procedure (exchanged with CMOS[28h])
  2412.     ES:SI -> ??? buffer
  2413. Return: ES:DI -> old DSP procedure
  2414.     ES:SI buffer filled with ten bytes from CMOS (addresses 14h-1Ch)
  2415.       followed by 00h (addresses 15h-1Ch copied only if less than 21h)
  2416. Note:    this function is also supported by XBIOS.COM
  2417. SeeAlso: AX=44C9h
  2418. --------b-1544C1-----------------------------
  2419. INT 15 - Olivetti Quaderno - ???
  2420.     AX = 44C1h
  2421.     ???
  2422. Return: ???
  2423. Note:    this function is also supported by XBIOS.COM
  2424. SeeAlso: AX=44C9h
  2425. --------b-1544C2-----------------------------
  2426. INT 15 - Olivetti Quaderno - ???
  2427.     AX = 44C2h
  2428.     DL = byte to be written to I/O port 350h
  2429. Note:    this function is also supported by XBIOS.COM
  2430. SeeAlso: AX=44C3h,AX=44C9h
  2431. --------b-1544C3-----------------------------
  2432. INT 15 - Olivetti Quaderno - GET ???
  2433.     AX = 44C3h
  2434. Return: DH = bitfields (see #0384)
  2435.     DL = value read from I/O port 350h
  2436. Note:    this function is also supported by XBIOS.COM
  2437. SeeAlso: AX=44C2h,AX=44C9h
  2438.  
  2439. Bitfields for Olivetti Quaderno ???:
  2440. Bit(s)    Description    (Table 0384)
  2441.  5-7    5-7 read from I/O port 351h
  2442.  2-4    zero
  2443.  1-0    "tres complique"
  2444. --------b-1544C4-----------------------------
  2445. INT 15 - Olivetti Quaderno - ???
  2446.     AX = 44C4h and 44C5h
  2447.     ???
  2448. Return: ???
  2449. Note:    this function is also supported by XBIOS.COM
  2450. SeeAlso: AX=44C9h
  2451. --------b-1544C6-----------------------------
  2452. INT 15 - Olivetti Quaderno - READ LCD
  2453.     AX = 44C6h
  2454. Return: DX = FFFFh clock is displayed on LCD display
  2455.     DX = other: hex number displayed in first four positions of display
  2456.     BH = left alphanumeric character on display (see #0385)
  2457.     BL = right alphanumeric character on display (see #0385)
  2458.     CL = colon flags (see #0386)
  2459. Notes:    the LCD display has the format HH:HH:AA, where H is a hex digit and A
  2460.       is an alphanumeric character
  2461.     this function is also supported by XBIOS.COM
  2462. SeeAlso: AX=44C7h,AX=44C9h
  2463.  
  2464. (Table 0385)
  2465. Values for Olivetti Quaderno LCD alphanumeric characters:
  2466.  00h-0Fh hex digit
  2467.  2Bh    "+"
  2468.  2Dh    "-"
  2469.  30h-39h "0" to "9"
  2470.  41h-5Ah "A" to "Z"
  2471.  61h-6Ah "a" to "z"
  2472.  else    blank
  2473.  
  2474. Bitfields for Olivetti Quaderno LCD colon flags:
  2475. Bit(s)    Description    (Table 0386)
  2476.  0    left colon on
  2477.  1    right colon on
  2478.  2-7    unused
  2479. --------b-1544C7-----------------------------
  2480. INT 15 - Olivetti Quaderno - WRITE LCD
  2481.     AX = 44C7h
  2482.     DX = hex display
  2483.         FFFFh display clock and "HI", "Md", or "Lo"
  2484.         BH,BL,CL unused
  2485.         other: display specified hex number in first four positions
  2486.         BH = left alphanumeric character on display (see #0385)
  2487.         BL = right alphanumeric character on display (see #0385)
  2488.         CL = colon flags (see #0386)
  2489. Return: nothing
  2490. Note:    this function is also supported by XBIOS.COM
  2491. SeeAlso: AX=44C6h
  2492. --------b-1544C8-----------------------------
  2493. INT 15 - Olivetti Quaderno - ???
  2494.     AX = 44C8h
  2495.     CL = ??? (00h,02h,21h)
  2496.     CH = ???
  2497.     ???
  2498. Return: ???
  2499. Note:    this function is also supported by XBIOS.COM
  2500. SeeAlso: AX=44C9h
  2501. --------b-1544C9-----------------------------
  2502. INT 15 - Olivetti Quaderno - GET XBIOS VERSION
  2503.     AX = 44C9h
  2504. Return: AL = major version
  2505.     AH = minor version
  2506. Note:    this function is also supported by XBIOS.COM
  2507. --------B-1544F1-----------------------------
  2508. INT 15 U - Toshiba laptops - SECURITY LEVEL CHECK
  2509.     AX = 44F1h
  2510.     DS:DX -> byte with 00h ???
  2511. Return: ???
  2512. Note:    used by Toshiba BIOS setup utility TSETUP.EXE to distinguish
  2513.       between USER and SUPERVISOR security level
  2514. SeeAlso: AX=44F2h,AX=44F3h
  2515. --------B-1544F2BX0604-----------------------
  2516. INT 15 U - Toshiba laptops - SECURITY LEVEL CHECK
  2517.     AX = 44F2h
  2518.     BX = 0604h ???
  2519. Return: CF = ???
  2520.     AH = ???
  2521.     DX = ???
  2522. Note:    used by Toshiba BIOS setup utility TSETUP.EXE to distinguish
  2523.       between USER and SUPERVISOR security level
  2524. SeeAlso: AX=44F1h,AX=44F3h
  2525. --------B-1544F3-----------------------------
  2526. INT 15 U - Toshiba laptops - SECURITY LEVEL CHECK
  2527.     AX = 44F3h
  2528.     DS:DX -> byte with 00h or 01h ???
  2529. Return: DS:DX -> changed ???
  2530. Note:    used by Toshiba BIOS setup utility TSETUP.EXE to distinguish
  2531.       between USER and SUPERVISOR security level
  2532. SeeAlso: AX=44F1h,AX=44F2h
  2533. --------b-1545-------------------------------
  2534. INT 15 U - HP 100LX/200LX - SET DISPLAY CONTROL STATUS
  2535.     AH = 45h
  2536.     AL = new display control status
  2537.         bit 0: DISPCTL flag +C instead of -C
  2538.         bit 1: DISPCTL flag +K instead of -K
  2539. SeeAlso: AH=46h"HP",AH=47h"HP"
  2540. --------b-1546-------------------------------
  2541. INT 15 U - HP 100LX/200LX - SET POWER OFF TIMEOUT
  2542.     AH = 46h
  2543.     BX = timeout value in ticks
  2544.         0000h inhibit auto power off
  2545. Note:    the 200LX default timeout is 0CCDh = 3277 ticks = approx. 3 min.
  2546. SeeAlso: AH=45h"HP",AH=47h"HP"
  2547. --------b-154600-----------------------------
  2548. INT 15 - Compaq SLT/286 - READ POWER CONSERVATION/MODEM CONFIGURATION
  2549.     AX = 4600h
  2550. Return: AH = modem configuration information (see #0387)
  2551.     AL = power conservation status information (see #0388)
  2552.     BH = default system inactivity timeout (1-21 minutes)
  2553.     BL = current system inactivity timeout (1-21 minutes)
  2554.     CH = default video display inactivity timeout (1-63 minutes)
  2555.     CL = current video display inactivity timeout (1-63 minutes)
  2556.     DH = default fixed disk drive inactivity timeout (1-21 minutes)
  2557.     DL = current fixed disk drive inactivity timeout (1-21 minutes)
  2558. SeeAlso: AX=4280h,AX=4601h,INT 77
  2559.  
  2560. Bitfields for Compaq SLT/286 modem configuration information:
  2561. Bit(s)    Description    (Table 0387)
  2562.  0    powerup state (0 off, 1 on)
  2563.  1    modem installed
  2564.  2    IRQ line assignment (0 IRQ 4, 1 IRQ 3)
  2565.  3    COM port assignment (0 = COM 2, 1 = COM 1)
  2566.  4    modem state (0 not assigned, 1 assigned)
  2567.  5    modem is on
  2568.  
  2569. Bitfields for Compaq SLT/286 power conservation status:
  2570. Bit(s)    Description    (Table 0388)
  2571.  0    power source (0 internal, 1 external)
  2572.  1-2    low battery state
  2573.     00 no low battery condition
  2574.     01 low battery 1
  2575.     10 reserved
  2576.     11 low battery 2
  2577.  3-4    power conservation mode
  2578.     00 automatic, 01 on, 10 off, 11 reserved
  2579. --------b-154601-----------------------------
  2580. INT 15 - Compaq SLT/286 - MODIFY POWER CONSERVATION/MODEM CONFIGURATION
  2581.     AX = 4601h
  2582.     BL = system inactivity timeout (1-21 minutes)
  2583.         FFh do not change
  2584.     CL = video display inactivity timeout (1-63 minutes)
  2585.         FFh do not change
  2586.     DL = current fixed disk drive inactivity timeout (1-21 minutes)
  2587.         FFh do not change
  2588.     DH = new modem state (00h turn off, 01h turn on, FFh don't change)
  2589. Return: CF clear if successful
  2590.         AH = 00h
  2591.         BL = current system inactivity timeout (1-21 minutes)
  2592.         CL = current video display inactivity timeout (1-63 minutes)
  2593.         DL = current fixed disk drive inactivity timeout (1-21 minutes)
  2594.         DH = modem state (FFh unchanged, 00h turned off, 01h turned on)
  2595.     CF set on error
  2596.         AH = error code
  2597.         01h input is out of range
  2598.         02h no modem present
  2599. SeeAlso: AX=4600h,INT 77
  2600. --------b-154604-----------------------------
  2601. INT 15 - Compaq Contura 486 and "Alladin" 08/05/93 ROMs - GET ???
  2602.     AX = 4604h
  2603. Return: CF clear if successful
  2604.         AL = byte read from I/O port 03F8h
  2605.     CF set on error (not supported)
  2606.         AH = 86h (unsupported function)
  2607. Note:    also supported by 7/26/93 LTE Lite 386 ROM
  2608. --------b-154605-----------------------------
  2609. INT 15 - Compaq Contura 486 and "Alladin" 08/05/93 ROMs - ???
  2610.     AX = 4605h
  2611. Return: CF clear if successful
  2612.     CF set on error (not supported)
  2613.         AH = 86h (unsupported function)
  2614. Note:    this function is a NOP (other than clearing CF) in the 08/05/93 version
  2615.       of the Contura 486/486c/486cx and "Aladdin" ROM, and the 7/26/93
  2616.       LTE Lite 386 ROM
  2617. --------b-1547-------------------------------
  2618. INT 15 U - HP 100LX/200LX - GET/SET DISPLAY CONTRAST
  2619.     AH = 47h
  2620.     AL = subfunction
  2621.        00h set contrast
  2622.         BL = new contrast
  2623.             (00h-0Fh, 0Fh is darkest, 10h-FFh are same as 0Fh)
  2624.        other get current contrast
  2625. Return: AL = contrast (00h-0Fh, 0Fh is darkest)
  2626. Note:    may be for backward compatibility with HP95LX, as INT 15/AH=62h does
  2627.       substantially the same thing as this function
  2628. SeeAlso: AH=45h"HP",AH=48h"HP",AH=62h"HP"
  2629. --------b-1548-------------------------------
  2630. INT 15 U - HP 100LX/200LX - SET BUZZER VOLUME
  2631.     AH = 48h
  2632.     AL = volume (00h-03h; 03h is loudest, 04h-FFh are same as 03h)
  2633. SeeAlso: AH=47h"HP"
  2634. --------S-1549-------------------------------
  2635. INT 15 U - HP 100LX/200LX - SERIAL INTERFACE SELECT
  2636.     AH = 49h
  2637.     AL = serial interface
  2638.         00h wired (COM1)
  2639.         01h infrared
  2640. Note:    interface should only be changed in deactivated state (see AH=4Ah)
  2641. SeeAlso: AH=4Ah"HP"
  2642. --------J-154900-----------------------------
  2643. INT 15 - Far East MS-DOS - GET BIOS TYPE
  2644.     AX = 4900h
  2645. Return: CF clear if successful
  2646.         AH = 00h
  2647.         BL = BIOS mode
  2648.         00h DOS/V
  2649.         01h standard DBCS DOS (hardware DBCS support)
  2650.     CF set on error
  2651.         AH = 86h (function not supported)
  2652. Note:    in practice, DOS/J returns AH=86h; AX DOS does not support this call
  2653. SeeAlso: AH=50h,INT 21/AH=30h
  2654. --------S-154A-------------------------------
  2655. INT 15 U - HP 100LX/200LX - SERIAL INTERFACE CONTROL
  2656.     AH = 4Ah
  2657.     AL = control
  2658.         00h deactivate
  2659.         01h activate
  2660. Note:    interface selected with AH=49h will be (de)activated
  2661. SeeAlso: AH=49h"HP",AH=4Bh"HP"
  2662. --------b-154B-------------------------------
  2663. INT 15 U - HP 100LX/200LX - ADJUST SYSTEM TIME
  2664.     AH = 4Bh
  2665. Desc:    adjust system time based on real-time clock
  2666. SeeAlso: AH=4Ah"HP",INT 1A/AH=02h,INT 21/AH=2Ch
  2667. --------b-154DD4-----------------------------
  2668. INT 15 - HP 95LX/100LX/200LX - INSTALLATION CHECK
  2669.     AX = 4DD4h
  2670. Return: BX = 4850h ("HP") if HP 95LX/100LX/200LX
  2671.         CX = model
  2672.         0101h HP 95LX
  2673.         0102h HP 100LX/200LX
  2674.         DH = ???
  2675.         02h HP 200LX 2MB BIOS 1.01 A D german
  2676.         DL = ???
  2677.         00h HP 95LX
  2678.         01h HP 200LX 2MB BIOS 1.01 A D german
  2679. SeeAlso: INT 0B"HP 95LX",INT 0F"HP 95LX",INT 5F/AH=00h,INT 60/DI=0100h
  2680. SeeAlso: INT 61"HP 95LX"
  2681. --------b-154E-------------------------------
  2682. INT 15 - HP 95LX - ENABLE/DISABLE LIGHT SLEEP
  2683.     AH = 4Eh
  2684.     AL = light sleep
  2685.         00h disabled
  2686.         01h enabled
  2687. Note:    when light sleep is disabled, the system will continue running at full
  2688.       speed; when enabled, it may automatically slow to conserve batteries
  2689. SeeAlso: INT 06"HP 95LX",INT 60/DI=0100h
  2690. ----------154E-------------------------------
  2691. INT 15 - IBM SurePath BIOS - Officially "Private" Function
  2692.     AH = 4Eh
  2693. SeeAlso: AH=07h"IBM",AH=3Eh"IBM"
  2694. --------B-154F-------------------------------
  2695. INT 15 C - KEYBOARD - KEYBOARD INTERCEPT (AT model 3x9,XT2,XT286,CONV,PS)
  2696.     AH = 4Fh
  2697.     AL = hardware scan code (see #0005)
  2698.     CF set
  2699. Return: CF set to continue processing scan code
  2700.        AL = possibly-altered hardware scan code (see #0005)
  2701.     CF clear
  2702.        scan code should be ignored
  2703. Notes:    called by INT 09 handler to translate scan codes; the INT 09 code does
  2704.       not examine the scan code it reads from the keyboard until after
  2705.       this function returns.  This permits software to rearrange the
  2706.       keyboard; for example, swapping the CapsLock and Control keys, or
  2707.       turning the right Shift key into Enter.
  2708.     DOS 6 KEYB.COM will not pass through this function if Ctrl-Alt-Del is
  2709.       pressed and a SmartDrive v4-compatible cache is installed which has
  2710.       dirty cache buffers; some other disk caches such as HyperDisk
  2711.       operate similarly in order to prevent loss of cached data which has
  2712.       not yet been written to disk
  2713.     IBM classifies this function as required
  2714. SeeAlso: INT 09,INT 15/AH=C0h
  2715. --------J-1550-------------------------------
  2716. INT 15 - DOS/V - FONT SUBSYSTEM ACCESS
  2717.     AH = 50h
  2718.     AL = which function address to retrieve
  2719.         00h "read font" function
  2720.         01h "write font" function
  2721.     BL = 00h
  2722.     BH = character size (00h single-byte, 01h double-byte)
  2723.     DH = width of character cell
  2724.     DL = height of character cell
  2725.     BP = code page (see #0389)
  2726. Return: CF clear if successful
  2727.         AH = 00h
  2728.         ES:BX -> requested function's address
  2729.     CF set on error
  2730.         AH = error code (see #0390)
  2731. SeeAlso: AH=49h
  2732.  
  2733. (Table 0389)
  2734. Values for DOS/V code page:
  2735.  0    default
  2736.  437    US English
  2737.  932    Japanese
  2738.  934    Korea
  2739.  936    China
  2740.  938    Taiwan
  2741. SeeAlso: #1411
  2742.  
  2743. (Table 0390)
  2744. Values for DOS/V error code:
  2745.  01h    invalid font type in BH
  2746.  02h    BL not zero
  2747.  03h    invalid font size
  2748.  04h    invalid code page
  2749.  80h    unsupported function (PC)
  2750.  86h    unsupported function (XT)
  2751. SeeAlso: #1332
  2752. --------T-1550-------------------------------
  2753. INT 15 - VMIX v2.???+ - "sys_vm_page" - SET NEW VIRTUAL PAGE TABLE
  2754.     AH = 50h
  2755.     BX = segment of page directory table
  2756.     CX = page number of page table
  2757. SeeAlso: AH=10h"VMiX",AH=51h"VMiX",AH=52h"VMiX"
  2758. --------T-1551-------------------------------
  2759. INT 15 - VMiX v2.???+ - "sys_vm_func" - EXECUTE FUNCTION IN PROTECTED MODE
  2760.     AH = 51h
  2761.     STACK:    DWORD    selector:offset of function
  2762. Return: registers as returned by function
  2763. Note:    executes function with privilege level 0 (highest privilege)
  2764. SeeAlso: AH=10h"VMiX",AH=52h"VMiX"
  2765. --------B-155101-----------------------------
  2766. INT 15 - SYSTEM - later PS/2s - EXPANSION UNIT, RETURN CONFIGURATION NUMBER
  2767.     AX = 5101h
  2768. Return: CF set if successful
  2769.         AH = 00h
  2770.         AL = current configuration number
  2771.         00h system unit only
  2772.         FFh configuration not recognized
  2773.         BX = status flag
  2774.         bits 0-14: reserved
  2775.         bit 15: additional data is available (location TBD)
  2776.     CF clear on error
  2777.         AH = status
  2778.         01h expansion unit is not present
  2779.         86h function not supported
  2780. Note:    CF convention is the reverse of the standard convention for this
  2781.       interrupt.  (Perhaps a typo in the IBM BIOS Tech Ref?)
  2782. --------T-1552-------------------------------
  2783. INT 15 - VMiX v2.???+ - "sys_vm_init" - INITIALIZE PROTECTED-MODE ENVIRONMENT
  2784.     AH = 52h
  2785. SeeAlso: AH=50h"VMiX",AH=51h"VMiX"
  2786. --------d-1552-------------------------------
  2787. INT 15 C - IBM/MS INT 13 Extensions - MEDIA EJECT INTERCEPT
  2788.     AH = 52h
  2789.     DL = drive number
  2790. Return: CF clear if OK to eject media
  2791.         AH = 00h
  2792.     CF set if ejection disallowed
  2793.         AH = error code (B1h,B3h) (see #0159)
  2794. Note:    called by the IBM/MS INT 13 Extensions driver/BIOS when an ejection
  2795.       request is made
  2796. SeeAlso: INT 13/AH=46h"INT 13 Extensions"
  2797. --------p-155300-----------------------------
  2798. INT 15 - Advanced Power Management v1.0+ - INSTALLATION CHECK
  2799.     AX = 5300h
  2800.     BX = device ID of system BIOS (0000h)
  2801. Return: CF clear if successful
  2802.         AH = major version (BCD)
  2803.         AL = minor version (BCD)
  2804.         BX = 504Dh ("PM")
  2805.         CX = flags (see #0391)
  2806.     CF set on error
  2807.         AH = error code (06h,09h,86h) (see #0392)
  2808. BUG:    early versions of the Award Modular BIOS with built-in APM support
  2809.       reportedly do not set BX on return
  2810.  
  2811. Bitfields for APM flags:
  2812. Bit(s)    Description    (Table 0391)
  2813.  0    16-bit protected mode interface supported
  2814.  1    32-bit protected mode interface supported
  2815.  2    CPU idle call reduces processor speed
  2816.  3    BIOS power management disabled
  2817.  4    BIOS power management disengaged (APM v1.1)
  2818.  5-7    reserved
  2819.  
  2820. (Table 0392)
  2821. Values for APM error code:
  2822.  01h    power management functionality disabled
  2823.  02h    interface connection already in effect
  2824.  03h    interface not connected
  2825.  04h    real-mode interface not connected
  2826.  05h    16-bit protected-mode interface already connected
  2827.  06h    16-bit protected-mode interface not supported
  2828.  07h    32-bit protected-mode interface already connected
  2829.  08h    32-bit protected-mode interface not supported
  2830.  09h    unrecognized device ID
  2831.  0Ah    invalid parameter value in CX
  2832.  0Bh    (APM v1.1) interface not engaged
  2833.  0Ch    (APM v1.2) function not supported
  2834.  0Dh    (APM v1.2) Resume Timer disabled
  2835.  0Eh-1Fh reserved for other interface and general errors
  2836.  20h-3Fh reserved for CPU errors
  2837.  40h-5Fh reserved for device errors
  2838.  60h    can't enter requested state
  2839.  61h-7Fh reserved for other system errors
  2840.  80h    no power management events pending
  2841.  81h-85h reserved for other power management event errors
  2842.  86h    APM not present
  2843.  87h-9Fh reserved for other power management event errors
  2844.  A0h-FEh reserved
  2845.  FFh    undefined
  2846. --------p-155301-----------------------------
  2847. INT 15 - Advanced Power Management v1.0+ - CONNECT REAL-MODE INTERFACE
  2848.     AX = 5301h
  2849.     BX = device ID of system BIOS (0000h)
  2850. Return: CF clear if successful
  2851.     CF set on error
  2852.         AH = error code (02h,05h,07h,09h) (see #0392)
  2853. Note:    on connection, an APM v1.1 or v1.2 BIOS switches to APM v1.0
  2854.       compatibility mode until it is informed that the user supports a
  2855.       newer version of APM (see AX=530Eh)
  2856. SeeAlso: AX=5302h,AX=5303h,AX=5304h
  2857. --------p-155302-----------------------------
  2858. INT 15 R - Advanced Power Management v1.0+ - CONNECT 16-BIT PROTMODE INTERFACE
  2859.     AX = 5302h
  2860.     BX = device ID of system BIOS (0000h)
  2861. Return: CF clear if successful
  2862.         AX = real-mode segment base address of protected-mode 16-bit code
  2863.         segment
  2864.         BX = offset of entry point
  2865.         CX = real-mode segment base address of protected-mode 16-bit data
  2866.         segment
  2867.         ---APM v1.1---
  2868.         SI = APM BIOS code segment length
  2869.         DI = APM BIOS data segment length
  2870.     CF set on error
  2871.         AH = error code (02h,05h,06h,07h,09h) (see #0392)
  2872. Notes:    the caller must initialize two consecutive descriptors with the
  2873.       returned segment base addresses; these descriptors must be valid
  2874.       whenever the protected-mode interface is called, and will have
  2875.       their limits arbitrarily set to 64K.
  2876.     the protected mode interface is invoked by making a far call with the
  2877.       same register values as for INT 15; it must be invoked while CPL=0,
  2878.       the code segment descriptor must have a DPL of 0, the stack must be
  2879.       in a 16-bit segment and have enough room for BIOS use and possible
  2880.       interrupts, and the current I/O permission bit map must allow access
  2881.       to the I/O ports used for power management.
  2882.     functions 00h-03h are not available from protected mode
  2883.     on connection, an APM v1.1 or v1.2 BIOS switches to APM v1.0
  2884.       compatibility mode until it is informed that the user supports a
  2885.       newer version of APM (see AX=530Eh)
  2886. SeeAlso: AX=5301h,AX=5303h,AX=5304h
  2887. --------p-155303-----------------------------
  2888. INT 15 - Advanced Power Management v1.0+ - CONNECT 32-BIT PROTMODE INTERFACE
  2889.     AX = 5303h
  2890.     BX = device ID of system BIOS (0000h)
  2891. Return: CF clear if successful
  2892.         AX = real-mode segment base address of protected-mode 32-bit code
  2893.         segment
  2894.         EBX = offset of entry point
  2895.         CX = real-mode segment base address of protected-mode 16-bit code
  2896.         segment
  2897.         DX = real-mode segment base address of protected-mode 16-bit data
  2898.         segment
  2899.         ---APM v1.1---
  2900.         SI = APM BIOS code segment length
  2901.         DI = APM BIOS data segment length
  2902.     CF set on error
  2903.         AH = error code (02h,05h,07h,08h,09h) (see #0392)
  2904. Notes:    the caller must initialize three consecutive descriptors with the
  2905.       returned segment base addresses for 32-bit code, 16-bit code, and
  2906.       16-bit data, respectively; these descriptors must be valid whenever
  2907.       the protected-mode interface is called, and will have their limits
  2908.       arbitrarily set to 64K.
  2909.     the protected mode interface is invoked by making a far call to the
  2910.       32-bit code segment with the same register values as for INT 15; it
  2911.       must be invoked while CPL=0, the code segment descriptor must have a
  2912.       DPL of 0, the stack must be in a 32-bit segment and have enough room
  2913.       for BIOS use and possible interrupts, and the current I/O permission
  2914.       bit map must allow access to the I/O ports used for power management.
  2915.     functions 00h-03h are not available from protected mode
  2916.     on connection, an APM v1.1 or v1.2 BIOS switches to APM v1.0
  2917.       compatibility mode until it is informed that the user supports a
  2918.       newer version of APM (see AX=530Eh)
  2919. SeeAlso: AX=5301h,AX=5302h,AX=5304h
  2920. --------p-155304-----------------------------
  2921. INT 15 - Advanced Power Management v1.0+ - DISCONNECT INTERFACE
  2922.     AX = 5304h
  2923.     BX = device ID of system BIOS (0000h)
  2924. Return: CF clear if successful
  2925.     CF set on error
  2926.         AH = error code (03h,09h) (see #0392)
  2927. SeeAlso: AX=5301h,AX=5302h,AX=5303h
  2928. --------p-155305-----------------------------
  2929. INT 15 - Advanced Power Management v1.0+ - CPU IDLE
  2930.     AX = 5305h
  2931. Return: CF clear if successful (after system leaves idle state)
  2932.     CF set on error
  2933.         AH = error code (03h,0Bh) (see #0392)
  2934. Notes:    call when the system is idle and should be suspended until the next
  2935.       system event or interrupt
  2936.     should not be called from within a hardware interrupt handler to avoid
  2937.       reentrance problems
  2938.     if an interrupt causes the system to resume normal processing, the
  2939.       interrupt may or may not have been handled when the BIOS returns
  2940.       from this call; thus, the caller should allow interrupts on return
  2941.     interrupt handlers may not retain control if the BIOS allows
  2942.       interrupts while in idle mode even if they are able to determine
  2943.       that they were called from idle mode
  2944.     the caller should issue this call continuously in a loop until it needs
  2945.       to perform some processing of its own
  2946. SeeAlso: AX=1000h,AX=5306h,INT 2F/AX=1680h
  2947. --------p-155306-----------------------------
  2948. INT 15 - Advanced Power Management v1.0+ - CPU BUSY
  2949.     AX = 5306h
  2950. Return: CF clear if successful
  2951.     CF set on error
  2952.         AH = error code (03h,0Bh) (see #0392)
  2953. Notes:    called to ensure that the system runs at full speed even on systems
  2954.       where the BIOS is unable to recognize increased activity (especially
  2955.       if interrupts are hooked by other programs and not chained to the
  2956.       BIOS)
  2957.     this call may be made even when the system is already running at full
  2958.       speed, but it will create unnecessary overhead
  2959.     should not be called from within a hardware interrupt handler to avoid
  2960.       reentrance problems
  2961. SeeAlso: AX=5305h
  2962. --------p-155307-----------------------------
  2963. INT 15 - Advanced Power Management v1.0+ - SET POWER STATE
  2964.     AX = 5307h
  2965.     BX = device ID (see #0393)
  2966.     CX = system state ID (see #0394)
  2967. Return: CF clear if successful
  2968.     CF set on error
  2969.         AH = error code (01h,03h,09h,0Ah,0Bh,60h) (see #0392)
  2970. Note:    should not be called from within a hardware interrupt handler to avoid
  2971.       reentrance problems
  2972. SeeAlso: AX=530Ch
  2973.  
  2974. (Table 0393)
  2975. Values for APM device IDs:
  2976.  0000h    system BIOS
  2977.  0001h    all devices for which the system BIOS manages power
  2978.  01xxh    display (01FFh for all attached display devices)
  2979.  02xxh    secondary storage (02FFh for all attached secondary storage devices)
  2980.  03xxh    parallel ports (03FFh for all attached parallel ports)
  2981.  04xxh    serial ports (04FFh for all attached serial ports)
  2982. ---APM v1.1+ ---
  2983.  05xxh    network adapters (05FFh for all attached network adapters)
  2984.  06xxh    PCMCIA sockets (06FFh for all)
  2985.  0700h-7FFFh reserved
  2986.  80xxh    system battery devices (APM v1.2)
  2987.  8100h-DFFFh reserved
  2988.  Exxxh    OEM-defined power device IDs
  2989.  F000h-FFFFh reserved
  2990.  
  2991. (Table 0394)
  2992. Values for system state ID:
  2993.  0000h    ready (not supported for device ID 0001h)
  2994.  0001h    stand-by
  2995.  0002h    suspend
  2996.  0003h    off (not supported for device ID 0001h)
  2997. ---APM v1.1---
  2998.  0004h    last request processing notification (only for device ID 0001h)
  2999.  0005h    last request rejected (only for device ID 0001h)
  3000.  0006h-001Fh reserved system states
  3001.  0020h-003Fh OEM-defined system states
  3002.  0040h-007Fh OEM-defined device states
  3003.  0080h-FFFFh reserved device states
  3004. --------p-155307CX0001-----------------------
  3005. INT 15 - Advanced Power Management v1.0+ - SYSTEM STAND-BY
  3006.     AX = 5307h
  3007.     CX = 0001h
  3008.     BX = 0001h (device ID for all power-managed devices)
  3009. Return: CF clear
  3010. Notes:    puts the entire system into stand-by mode; normally called in response
  3011.       to a System Stand-by Request notification after any necessary
  3012.       processing, but may also be invoked at the caller's discretion
  3013.     should not be called from within a hardware interrupt handler to avoid
  3014.       reentrance problems
  3015.     the stand-by state is typically exited on an interrupt
  3016. SeeAlso: AX=4280h,AX=5307h/CX=0002h"SUSPEND",AX=530Bh
  3017. --------p-155307CX0002-----------------------
  3018. INT 15 - Advanced Power Management v1.0+ - SUSPEND SYSTEM
  3019.     AX = 5307h
  3020.     CX = 0002h
  3021.     BX = 0001h (device ID for all power-managed devices)
  3022. Return: after system is resumed
  3023.     CF clear
  3024. Notes:    puts the entire system into a low-power suspended state; normally
  3025.       called in response to a Suspend System Request notification after
  3026.       any necessary processing, but may also be invoked at the caller's
  3027.       discretion
  3028.     should not be called from within a hardware interrupt handler to avoid
  3029.       reentrance problems
  3030.     the caller may need to update its date and time values because the
  3031.       system could have been suspended for a long period of time
  3032. SeeAlso: AX=5307h/CX=0001h"STAND-BY",AX=530Bh
  3033. --------p-155308-----------------------------
  3034. INT 15 - Advanced Power Management v1.0+ - ENABLE/DISABLE POWER MANAGEMENT
  3035.     AX = 5308h
  3036.     BX = device ID for all devices power-managed by APM
  3037.         0001h (APM v1.1+)
  3038.         FFFFh (APM v1.0)
  3039.     CX = new state
  3040.         0000h disabled
  3041.         0001h enabled
  3042. Return: CF clear if successful
  3043.     CF set on error
  3044.         AH = error code (01h,03h,09h,0Ah,0Bh) (see #0392)
  3045. Notes:    when power management is disabled, the system BIOS will not
  3046.       automatically power down devices, enter stand-by or suspended mode,
  3047.       or perform any power-saving actions in response to AX=5305h calls
  3048.     should not be called from within a hardware interrupt handler to avoid
  3049.       reentrance problems
  3050.     the APM BIOS should never be both disabled and disengaged at the same
  3051.       time
  3052. SeeAlso: AX=5309h,AX=530Dh,AX=530Fh
  3053. --------p-155309-----------------------------
  3054. INT 15 - Advanced Power Management v1.0+ - RESTORE POWER-ON DEFAULTS
  3055.     AX = 5309h
  3056.     BX = device ID for all devices power-managed by APM
  3057.         0001h (APM v1.1)
  3058.         FFFFh (APM v1.0)
  3059. Return: CF clear if successful
  3060.     CF set on error
  3061.         AH = error code (03h,09h,0Bh) (see #0392)
  3062. Note:    should not be called from within a hardware interrupt handler to avoid
  3063.       reentrance problems
  3064. SeeAlso: AX=5308h
  3065. --------p-15530A-----------------------------
  3066. INT 15 - Advanced Power Management v1.0+ - GET POWER STATUS
  3067.     AX = 530Ah
  3068.     BX = device ID
  3069.         0001h all devices power-managed by APM
  3070.         80xxh specific battery unit number XXh (01h-FFh) (APM v1.2)
  3071. Return: CF clear if successful
  3072.         BH = AC line status
  3073.         00h off-line
  3074.         01h on-line
  3075.         02h on backup power (APM v1.1)
  3076.         FFh unknown
  3077.         other reserved
  3078.         BL = battery status (see #0395)
  3079.         CH = battery flag (APM v1.1+) (see #0396)
  3080.         CL = remaining battery life, percentage
  3081.         00h-64h (0-100) percentage of full charge
  3082.         FFh unknown
  3083.         DX = remaining battery life, time (APM v1.1) (see #0397)
  3084.         ---if specific battery unit specified---
  3085.         SI = number of battery units currently installed
  3086.     CF set on error
  3087.         AH = error code (09h,0Ah) (see #0392)
  3088. Notes:    should not be called from within a hardware interrupt handler to avoid
  3089.       reentrance problems
  3090.     supported in real mode (INT 15) and both 16-bit and 32-bit protected
  3091.       mode
  3092.  
  3093. (Table 0395)
  3094. Values for APM v1.0+ battery status:
  3095.  00h    high
  3096.  01h    low
  3097.  02h    critical
  3098.  03h    charging
  3099.  FFh    unknown
  3100.  other    reserved
  3101. SeeAlso: #0396,#0397
  3102.  
  3103. Bitfields for APM v1.1+ battery flag:
  3104. Bit(s)    Description    (Table 0396)
  3105.  0    high
  3106.  1    low
  3107.  2    critical
  3108.  3    charging
  3109.  4    selected battery not present (APM v1.2)
  3110.  5-6    reserved (0)
  3111.  7    no system battery
  3112. Note:    all bits set (FFh) if unknown
  3113. SeeAlso: #0395,#0397
  3114.  
  3115. Bitfields for APM v1.1+ remaining battery life:
  3116. Bit(s)    Description    (Table 0397)
  3117.  15    time units: 0=seconds, 1=minutes
  3118.  14-0    battery life in minutes or seconds
  3119. Note:    all bits set (FFFFh) if unknown
  3120. SeeAlso: #0395,#0396
  3121. --------p-15530B-----------------------------
  3122. INT 15 - Advanced Power Management v1.0+ - GET POWER MANAGEMENT EVENT
  3123.     AX = 530Bh
  3124. Return: CF clear if successful
  3125.         BX = event code (see #0398)
  3126.         CX = event information (APM v1.2) if BX=0003h or BX=0004h
  3127.         bit 0: PCMCIA socket was powered down in suspend state
  3128.     CF set on error
  3129.         AH = error code (03h,0Bh,80h) (see #0392)
  3130. Notes:    although power management events are often asynchronous, notification
  3131.       will not be made until polled via this call to permit software to
  3132.       only receive event notification when it is prepared to process
  3133.       power management events; since these events are not very time-
  3134.       critical, it should be sufficient to poll once or twice per second
  3135.     the critical resume notification is made after the system resumes
  3136.       from an emergency suspension; normally, the system BIOS only notifies
  3137.       its partner that it wishes to suspend and relies on the partner to
  3138.       actually request the suspension, but no notification is made on an
  3139.       emergency suspension
  3140.     should not be called from within a hardware interrupt handler to avoid
  3141.       reentrance problems
  3142. SeeAlso: AX=5307h,AX=5307h/CX=0001h"STAND-BY",AX=5307h/CX=0002h"SUSPEND"
  3143.  
  3144. (Table 0398)
  3145. Values for APM event code:
  3146.  0001h    system stand-by request
  3147.  0002h    system suspend request
  3148.  0003h    normal resume system notification
  3149.  0004h    critical resume system notification
  3150.  0005h    battery low notification
  3151. ---APM v1.1---
  3152.  0006h    power status change notification
  3153.  0007h    update time notification
  3154.  0008h    critical system suspend notification
  3155.  0009h    user system standby request notification
  3156.  000Ah    user system suspend request notification
  3157.  000Bh    system standby resume notification
  3158. ---APM v1.2---
  3159.  000Ch    capabilities change notification (see AX=5310h)
  3160. ------
  3161.  000Dh-00FFh reserved system events
  3162.  01xxh    reserved device events
  3163.  02xxh    OEM-defined APM events
  3164.  0300h-FFFFh reserved
  3165. --------p-15530C-----------------------------
  3166. INT 15 - Advanced Power Management v1.1+ - GET POWER STATE
  3167.     AX = 530Ch
  3168.     BX = device ID (see #0393)
  3169. Return: CF clear if successful
  3170.         CX = system state ID (see #0394)
  3171.     CF set on error
  3172.         AH = error code (01h,09h) (see #0392)
  3173. SeeAlso: AX=5307h
  3174. --------p-15530D-----------------------------
  3175. INT 15 - Advanced Power Management v1.1+ - EN/DISABLE DEVICE POWER MANAGEMENT
  3176.     AX = 530Dh
  3177.     BX = device ID (see #0393)
  3178.     CX = function
  3179.         0000h disable power management
  3180.         0001h enable power management
  3181. Return: CF clear if successful
  3182.     CF set on error
  3183.         AH = error code (01h,03h,09h,0Ah,0Bh) (see #0392)
  3184. Desc:    specify whether automatic power management should be active for a
  3185.       given device
  3186. SeeAlso: AX=5308h,AX=530Fh
  3187. --------p-15530E-----------------------------
  3188. INT 15 - Advanced Power Management v1.1+ - DRIVER VERSION
  3189.     AX = 530Eh
  3190.     BX = device ID of system BIOS (0000h)
  3191.     CH = APM driver major version (BCD)
  3192.     CL = APM driver minor version (BCD) (02h for APM v1.2)
  3193. Return: CF clear if successful
  3194.         AH = APM connection major version (BCD)
  3195.         AL = APM connection minor version (BCD)
  3196.     CF set on error
  3197.         AH = error code (03h,09h,0Bh) (see #0392)
  3198. SeeAlso: AX=5300h,AX=5303h
  3199. --------p-15530F-----------------------------
  3200. INT 15 - Advanced Power Management v1.1+ - ENGAGE/DISENGAGE POWER MANAGEMENT
  3201.     AX = 530Fh
  3202.     BX = device ID (see #0393)
  3203.     CX = function
  3204.         0000h disengage power management
  3205.         0001h engage power management
  3206. Return: CF clear if successful
  3207.     CF set on error
  3208.         AH = error code (01h,09h) (see #0392)
  3209. Notes:    unlike AX=5308h, this call does not affect the functioning of the APM
  3210.       BIOS
  3211.     when cooperative power management is disengaged, the APM BIOS performs
  3212.       automatic power management of the system or device
  3213. SeeAlso: AX=5308h,AX=530Dh
  3214. --------p-155310-----------------------------
  3215. INT 15 - Advanced Power Management v1.2 - GET CAPABILITIES
  3216.     AX = 5310h
  3217.     BX = device ID (see #0393)
  3218.         0000h (APM BIOS)
  3219.         other reserved
  3220. Return: CF clear if successful
  3221.         BL = number of battery units supported (00h if no system batteries)
  3222.         CX = capabilities flags (see #0399)
  3223.     CF set on error
  3224.         AH = error code (01h,09h,86h) (see #0392)
  3225. Notes:    this function is supported via the INT 15, 16-bit protected mode, and
  3226.       32-bit protected mode interfaces; it does not require that a
  3227.       connection be established prior to use
  3228.     this function will return the capabilities currently in effect, not
  3229.       any new settings which have been made but do not take effect until
  3230.       a system restart
  3231. SeeAlso: AX=5300h,AX=530Fh,AX=5311h,AX=5312h,AX=5313h
  3232.  
  3233. Bitfields for APM v1.2 capabilities flags:
  3234. Bit(s)    Description    (Table 0399)
  3235.  0    can enter global standby state
  3236.  1    can enter global suspend state
  3237.  2    resume timer will wake up system from standby mode
  3238.  3    resume timer will wake up system from suspend mode
  3239.  4    Resume on Ring Indicator will wake up system from standby mode
  3240.  5    Resume on Ring Indicator will wake up system from suspend mode
  3241.  6    PCMCIA Ring Indicator will wake up system from standby mode
  3242.  7    PCMCIA Ring Indicator will wake up system from suspend mode
  3243. --------p-155311-----------------------------
  3244. INT 15 - Advanced Power Management v1.2 - GET/SET/DISABLE RESUME TIMER
  3245.     AX = 5311h
  3246.     BX = device ID (see #0393)
  3247.         0000h (APM BIOS)
  3248.         other reserved
  3249.     CL = function
  3250.         00h disable Resume Timer
  3251.         01h get Resume Timer
  3252.         02h set Resume Timer
  3253.         CH = resume time, seconds (BCD)
  3254.         DL = resume time, minutes (BCD)
  3255.         DH = resume time, hours (BCD)
  3256.         SI = resume date (BCD), high byte = month, low byte = day
  3257.         DI = resume date, year (BCD)
  3258. Return: CF clear if successful
  3259.         ---if getting timer---
  3260.         CH = resume time, seconds (BCD)
  3261.         DL = resume time, minutes (BCD)
  3262.         DH = resume time, hours (BCD)
  3263.         SI = resume date (BCD), high byte = month, low byte = day
  3264.         DI = resume date, year (BCD)
  3265.     CF set on error
  3266.         AH = error code (03h,09h,0Ah,0Bh,0Ch,0Dh,86h) (see #0392)
  3267. Notes:    this function is supported via the INT 15, 16-bit protected mode, and
  3268.       32-bit protected mode interfaces
  3269. SeeAlso: AX=5300h,AX=5310h,AX=5312h,AX=5313h
  3270. --------p-155312-----------------------------
  3271. INT 15 - Advanced Power Management v1.2 - ENABLE/DISABLE RESUME ON RING
  3272.     AX = 5312h
  3273.     BX = device ID (see #0393)
  3274.         0000h (APM BIOS)
  3275.         other reserved
  3276.     CL = function
  3277.         00h disable Resume on Ring Indicator
  3278.         01h enable Resume on Ring Indicator
  3279.         02h get Resume on Ring Indicator status
  3280. Return: CF clear if successful
  3281.         CX = resume status (0000h disabled, 0001h enabled)
  3282.     CF set on error
  3283.         AH = error code (03h,09h,0Ah,0Bh,0Ch,86h) (see #0392)
  3284. Notes:    this function is supported via the INT 15, 16-bit protected mode, and
  3285.       32-bit protected mode interfaces
  3286. SeeAlso: AX=5300h,AX=5310h,AX=5311h,AX=5313h
  3287. --------p-155313-----------------------------
  3288. INT 15 - Advanced Power Management v1.2 - ENABLE/DISABLE TIMER-BASED REQUESTS
  3289.     AX = 5313h
  3290.     BX = device ID (see #0393)
  3291.         0000h (APM BIOS)
  3292.         other reserved
  3293.     CL = function
  3294.         00h disable timer-based requests
  3295.         01h enable timer-based requests
  3296.         02h get timer-based requests status
  3297. Return: CF clear if successful
  3298.         CX = timer-based requests status (0000h disabled, 0001h enabled)
  3299.     CF set on error
  3300.         AH = error code (03h,09h,0Ah,0Bh,86h) (see #0392)
  3301. Notes:    this function is supported via the INT 15, 16-bit protected mode, and
  3302.       32-bit protected mode interfaces
  3303. SeeAlso: AX=5300h,AX=5310h,AX=5311h,AX=5312h
  3304. --------p-155380BH00-------------------------
  3305. INT 15 - APM SL Enhanced v1.0 - GET SUSPEND/GLOBAL STANDBY MODE
  3306.     AX = 5380h
  3307.     BH = 00h
  3308. Return: CF clear if successful
  3309.         AL = 82360SL Auto Power Off Timer High Count (APWR_TMRH)
  3310.         BL = sustdbymode (see #0400)
  3311. SeeAlso: AX=5380h/BH=01h,AX=5380h/BH=02h,AX=5380h/BH=7Fh
  3312.  
  3313. Bitfields for APM SL sustdbymode:
  3314. Bit(s)    Description    (Table 0400)
  3315.  2    ???
  3316.  1    Auto Power Off Timer Enable (APWR_TMR_EN)
  3317.  0    ???
  3318. --------p-155380BH01-------------------------
  3319. INT 15 - APM SL Enhanced v1.0 - SET SUSPEND/GLOBAL STANDBY MODE
  3320.     AX = 5380h
  3321.     BH = 01h
  3322.     BL = sustdbymode (see #0400)
  3323. Return: CF clear if successful
  3324. SeeAlso: AX=5380h/BH=00h,AX=5380h/BH=7Fh
  3325. --------p-155380BH02-------------------------
  3326. INT 15 - APM SL Enhanced v1.0 - GET GLOBAL STANDBY TIMER
  3327.     AX = 5380h
  3328.     BH = 02h
  3329. Return: CF clear if successful
  3330.     SI:DI = timer count in seconds (actually 1.024 seconds)
  3331. Desc:    reads the value of 82360SL GSTDBY_TMRH & GSTDBY_TMRL registers
  3332. SeeAlso: AX=5380h/BH=00h,AX=5380h/BH=03h,AX=5380h/BH=04h,AX=5380h/BH=7Fh
  3333. --------p-155380BH03-------------------------
  3334. INT 15 - APM SL Enhanced v1.0 - SET GLOBAL STANDBY TIMER
  3335.     AX = 5380h
  3336.     BH = 03h
  3337.     SI:DI = timer count in seconds (actually 1.024 seconds)
  3338. Return: CF clear if successful
  3339. Desc:    sets the value of 82360SL GSTDBY_TMRH & GSTDBY_TMRL registers
  3340. Note:    the maximum timer count is 268431 seconds
  3341. SeeAlso: AX=5380h/BH=02h,AX=5380h/BH=7Fh
  3342. --------p-155380BH04-------------------------
  3343. INT 15 - APM SL Enhanced v1.0 - GET AUTO POWER OFF TIMER
  3344.     AX = 5380h
  3345.     BH = 04h
  3346. Return: CF clear if successful
  3347.     SI:DI = timer count in seconds (actually 1.024 seconds)
  3348. Desc:    reads the value of 82360SL APWR_TMRH & APWR_TMRL registers
  3349. SeeAlso: AX=5380h/BH=02h,AX=5380h/BH=05h,AX=5380h/BH=06h,AX=5380h/BH=7Fh
  3350. --------p-155380BH05-------------------------
  3351. INT 15 - APM SL Enhanced v1.0 - SET AUTO POWER OFF TIMER
  3352.     AX = 5380h
  3353.     BH = 05h
  3354.     SI:DI = timer count in seconds (actually 1.024 seconds)
  3355. Return: CF clear if successful
  3356. Desc:    sets the value of 82360SL APWR_TMRH & APWR_TMRL registers
  3357. Note:    the maximum timer count is 134213 seconds
  3358. SeeAlso: AX=5380h/BH=04h,AX=5380h/BH=7Fh
  3359. --------p-155380BH06-------------------------
  3360. INT 15 - APM SL Enhanced v1.0 - GET RESUME CONDITION
  3361.     AX = 5380h
  3362.     BH = 06h
  3363. Return: CF clear if successful
  3364.         BL = resume condition (see #0401)
  3365. Desc:    reads the value of 82360SL RESUME_MASK register
  3366. SeeAlso: AX=5380h/BH=04h,AX=5380h/BH=07h,AX=5380h/BH=08h,AX=5380h/BH=7Fh
  3367.  
  3368. Bitfields for APM SL resume condition:
  3369. Bit(s)    Description    (Table 0401)
  3370.  7-2    reserved (0)
  3371.  1    alarm enabled (resume on CMOS alarm)
  3372.  0    ring enabled
  3373. --------p-155380BH07-------------------------
  3374. INT 15 - APM SL Enhanced v1.0 - SET RESUME CONDITION
  3375.     AX = 5380h
  3376.     BH = 07h
  3377.     BL = resume condition (see #0401)
  3378. Return: CF clear if successful
  3379. Desc:    sets the value of 82360SL RESUME_MASK register
  3380. SeeAlso: AX=5380h/BH=06h,AX=5380h/BH=7Fh
  3381. --------p-155380BH08-------------------------
  3382. INT 15 - APM SL Enhanced v1.0 - GET CALENDAR EVENT TIME
  3383.     AX = 5380h
  3384.     BH = 08h
  3385. Return: CF clear if successful
  3386.         CH = hours
  3387.         CL = minutes
  3388.         SI = seconds
  3389.     CF set on error
  3390.         AH = error code (see #0402)
  3391. Desc:    gets calendar event time from CMOS ram
  3392. SeeAlso: AX=5380h/BH=06h,AX=5380h/BH=09h,AX=5380h/BH=0Ah,AX=5380h/BH=7Fh
  3393.  
  3394. (Table 0402)
  3395. Values for APM SL error code:
  3396.  02h    no alarm set
  3397.  03h    no battery
  3398. --------p-155380BH09-------------------------
  3399. INT 15 - APM SL Enhanced v1.0 - SET CALENDAR EVENT TIME
  3400.     AX = 5380h
  3401.     BH = 09h
  3402.     CH = hours
  3403.     CL = minutes
  3404.     SI = seconds
  3405. Return: CF clear if successful
  3406.     CF set on error
  3407.         AH = error code (see #0402)
  3408. Desc:    sets calendar event time in CMOS ram, enables Alarm resume
  3409. SeeAlso: AX=5380h/BH=08h,AX=5380h/BH=7Fh
  3410. --------p-155380BH0A-------------------------
  3411. INT 15 - APM SL Enhanced v1.0 - GET CALENDAR EVENT DATE
  3412.     AX = 5380h
  3413.     BH = 0Ah
  3414. Return: CF clear if successful
  3415.         SI = century
  3416.         DI = year
  3417.         CH = month
  3418.         CL = day
  3419.     CF set on error
  3420.         AH = error code (see #0402)
  3421. Desc:    reads calendar event date from Extended CMOS ram
  3422. SeeAlso: AX=5380h/BH=08h,AX=5380h/BH=0Bh,AX=5380h/BH=0Ch,AX=5380h/BH=7Fh
  3423. --------p-155380BH0B-------------------------
  3424. INT 15 - APM SL Enhanced v1.0 - SET CALENDAR EVENT DATE
  3425.     AX = 5380h
  3426.     BH = 0Bh
  3427.     SI = century
  3428.     DI = year
  3429.     CH = month
  3430.     CL = day
  3431. Return: CF clear if successful
  3432.     CF set on error
  3433.         AH = error code (see #0402)
  3434. Desc:    sets calendar event date in Extended CMOS ram
  3435. SeeAlso: AX=5380h/BH=0Ah,AX=5380h/BH=7Fh
  3436. --------p-155380BH0C-------------------------
  3437. INT 15 - APM SL Enhanced v1.0 - GET CPU SPEED MODE
  3438.     AX = 5380h
  3439.     BH = 0Ch
  3440. Return: CF clear if successful
  3441.     CL = CPU clock divider (1,2,4 or 8)
  3442.     BL = autocpumode ???
  3443. Desc:    reads bits 4-5 of CPUPWRMODE register
  3444. SeeAlso: AX=5380h/BH=0Ah,AX=5380h/BH=0Dh,AX=5380h/BH=7Fh
  3445. --------p-155380BH0D-------------------------
  3446. INT 15 - APM SL Enhanced v1.0 - SET CPU SPEED MODE
  3447.     AX = 5380h
  3448.     BH = 0Dh
  3449.     CL = CPU clock divider (1,2,4 or 8)
  3450.     BL = autocpumode ???
  3451. Return: CF clear if successful
  3452. Desc:    writes bits 4-5 of CPUPWRMODE register
  3453. SeeAlso: AX=5380h/BH=0Ch,AX=5380h/BH=7Eh,AX=5380h/BH=7Fh
  3454. --------p-155380BH7E-------------------------
  3455. INT 15 - APM SL Enhanced v1.0 - SL HW PARAMETER
  3456.     AX = 5380h
  3457.     BH = 7Eh
  3458. Return: AL = ???
  3459.         03h on A-Step 386SL BIOSes
  3460.         12h on later steps
  3461.     BX = Control port (00B0h)
  3462. SeeAlso: AX=5380h/BH=00h,AX=5380h/BH=7Fh
  3463. --------p-155380BH7F-------------------------
  3464. INT 15 - Advanced Power Management v1.1 - OEM APM INSTALLATION CHECK
  3465.     AX = 5380h
  3466.     BH = 7Fh
  3467. Return: CF clear if successful
  3468.         BX = OEM identifier
  3469.         all other registers OEM-defined
  3470.         ---Intel SL Enhanced Option BIOS---
  3471.         BX = 534Ch ('SL')
  3472.         CL = 4Fh ('O')
  3473.         AL = version (10h = 1.0)
  3474.         ---HP APM BIOS---
  3475.         BX = 4850h ('HP')
  3476.         CX = version (0001h)
  3477.     CF set on error
  3478.         AH = error code (03h) (see #0392)
  3479. SeeAlso: AX=5380h/BH=00h
  3480. --------p-155380-----------------------------
  3481. INT 15 - Advanced Power Management v1.1 - OEM APM FUNCTIONS
  3482.     AX = 5380h
  3483.     BH <> 7Fh
  3484.     all other registers OEM-defined
  3485. Return: OEM-defined
  3486. SeeAlso: AX=5380h/BH=7Fh
  3487. --------X-1553B0BH00-------------------------
  3488. INT 15 - Intel System Management Bus - RESERVED
  3489.     AX = 53B0h
  3490.     BH = 00h
  3491. Program: the SMBus is a variant of ACCESS.bus being used by Intel and Duracell
  3492.       for the Smart Battery proposal, but designed to be generic enough to
  3493.       handle other devices besides batteries
  3494. --------X-1553B0BH01-------------------------
  3495. INT 15 - Intel System Management Bus - INSTALLATION CHECK
  3496.     AX = 53B0h
  3497.     BH = 01h
  3498.     BL = 72h ('r')
  3499.     CX = 6164h ('ad')
  3500. Return: CF clear if installed
  3501.         AH = SMBus BIOS Interface Specification major version (01h)
  3502.         AL = SMBus BIOS Interface Specification minor version (00h)
  3503.         BL = number of SMBus devices present
  3504.         CX = 6941h ('iA')
  3505.         DX = vendor-specified SMBus hardware code
  3506.         0000h means undefined hardware type
  3507.     CF set if error
  3508.         AH = Error code 0Ah, 86h (see #0403)
  3509. Note:    this function is only supported in INT 15h mode
  3510. SeeAlso: AX=53B0h/BH=02h,AX=53B0h/BH=03h,AX=53B0h/BH=04h,AX=53B0h/BH=06h
  3511.  
  3512. (Table 0403)
  3513. Values for Intel System Management Bus error codes:
  3514.  00h    SMBus OK
  3515.  01h    SMBus connect failed
  3516.  02h    SMBus already connected (see also #0404)
  3517.  03h    SMBus disconnect failed
  3518.  04h    SMBus not connected
  3519.  05h    SMBus INT 15 interface disabled
  3520.  06h    SMBus device address request out of range
  3521.  07h    SMBus unknown failure
  3522.  08h    SMBus message list empty
  3523.  09h    SMBus message list overflow
  3524.  0Ah    SMBus invalid signature
  3525.  10h    SMBus device address not acknowledged
  3526.  11h    SMBus device error detected
  3527.  12h    SMBus device command access denied
  3528.  13h    SMBus unknown error
  3529.  14h    SMBus transaction pending
  3530.  15h    SMBus no transaction pending
  3531.  16h    SMBus request does not match pending transaction
  3532.  17h    SMBus device access denied
  3533.  18h    SMBus timeout
  3534.  19h    SMBus protocol not supported
  3535.  1Ah    SMBus busy
  3536.  1Bh    SMBus SMI detected
  3537.  80h    SMBus OK (previously unreported SMI occurred)
  3538.  86h    SMBus not supported
  3539.  
  3540. (Table 0404)
  3541. Values for Intel System Management Bus Already Connected sub-error codes:
  3542.  01h    real mode connect already established
  3543.  02h    16-bit PMode connect already established
  3544.  03h    32-bit PMode connect already established
  3545. SeeAlso: #0403
  3546. --------X-1553B0BH02-------------------------
  3547. INT 15 - Intel System Management Bus - REAL MODE CONNECT
  3548.     AX = 53B0h
  3549.     BH = 02h
  3550.     CX = 6941h ('iA')
  3551. Return: CF clear if successful
  3552.         AX = SMBus Real mode code segment
  3553.         BX = offset of entry point into SMBus BIOS Interface
  3554.         CX = SMBus Real mode data segment
  3555.     CF set if error
  3556.         AH = error code (01h,02h,0Ah,86h) (see #0403)
  3557.         AL = sub-error code if error code is 02h (see #0404)
  3558. Desc:    connect to SMBus interface; once connected, all SMBus calls are made
  3559.       to the supplied entry point instead of INT 15 (with registers
  3560.       identical to those described here for INT 15)
  3561. Notes:    Support for this function is optional
  3562.     this function is only supported in INT 15 mode when implemented
  3563. SeeAlso: AX=53B0h/BH=01h,AX=53B0h/BH=03h,AX=53B0h/BH=04h,AX=53B0h/BH=05h
  3564. --------X-1553B0BH03-------------------------
  3565. INT 15 - Intel System Management Bus - 16-BIT PROTECTED-MODE CONNECT
  3566.     AX = 53B0h
  3567.     BH = 03h
  3568.     CX = 6941h ('iA')
  3569. Return: CF clear if successful
  3570.         AX = SMBus 16-bit code segment (real mode base address)
  3571.         BX = offset of entry point into SMBus BIOS Interface
  3572.         CX = SMBus 16-bit data segment (real mode base address)
  3573.         SI = code segment length in bytes
  3574.         DI = data segment length in bytes
  3575.     CF set if error
  3576.         AH = error code (01h,02h,0Ah,86h) (see #0403)
  3577.         AL = sub-error code if error code is 02h (see #0404)
  3578. Desc:    connect to SMBus interface; once connected, all SMBus calls are made
  3579.       to the supplied entry point instead of INT 15 (with registers
  3580.       identical to those described here for INT 15)
  3581. Notes:    before calling the entry point, two descriptors must be initialized
  3582.       in the GDT or LDT.  They must be consecutive and be in the order of
  3583.       code, then data.  At the time    of the call, the descriptors must be
  3584.       valid and have CPL=0.
  3585.     the code descriptor must be ring-0 privilege
  3586.     this function is only supported in INT 15 mode
  3587. SeeAlso: AX=53B0h/BH=01h,AX=53B0h/BH=02h,AX=53B0h/BH=04h,AX=53B0h/BH=05h
  3588. --------X-1553B0BH04-------------------------
  3589. INT 15 - Intel System Management Bus - 32-BIT PROTECTED-MODE CONNECT
  3590.     AX = 53B0h
  3591.     BH = 04h
  3592.     CX = 6941h ('iA')
  3593. Return: CF clear if successful
  3594.         AX = SMBus 32-bit code segment (real mode base address)
  3595.         EBX = offset of entry point into SMBus BIOS Interface
  3596.         CX = SMBus 16-bit code segment (real mode base address)
  3597.         DX = SMBus data segment (real mode base address)
  3598.         SI = code segment length in bytes
  3599.         DI = data segment length in bytes
  3600.     CF set if error
  3601.         AH = error code (01h,02h,0Ah,86h) (see #0403)
  3602.         AL = sub-error code if error code is 02h (see #0404)
  3603. Desc:    connect to SMBus interface; once connected, all SMBus calls are made
  3604.       to the supplied entry point instead of INT 15 (with registers
  3605.       identical to those described here for INT 15)
  3606. Notes:    before calling the entry point, two descriptors must be initialized in
  3607.       the GDT or LDT.  They must be consecutive and be in the order of
  3608.       32-bit code, 16-bit code, then data.    At the time of the call, the
  3609.       descriptors must be valid and have CPL=0.
  3610.     the code descriptors must be ring-0 privilege
  3611.     this function is supported only in INT 15 mode
  3612. SeeAlso: AX=53B0h/BH=01h,AX=53B0h/BH=02h,AX=53B0h/BH=03h,AX=53B0h/BH=05h
  3613. --------X-1553B0BH05-------------------------
  3614. INT 15 - Intel System Management Bus - DISCONNECT
  3615.     AX = 53B0h
  3616.     BH = 05h
  3617.     CX = 6941h ('iA')
  3618. Return: CF clear if successful
  3619.         AH = 00h (SMBus OK)
  3620.     CF set if error
  3621.         AH = error code (03h,04h,05h,0Ah,86h) (see #0403)
  3622. Note:    this function is supported in connected mode (far CALL entry point)
  3623.       only
  3624. SeeAlso: AX=53B0h/BH=01h,AX=53B0h/BH=02h,AX=53B0h/BH=03h,AX=53B0h/BH=04h
  3625. --------X-1553B0BH06-------------------------
  3626. INT 15 - Intel System Management Bus - GET DEVICE ADDRESSES
  3627.     AX = 53B0h
  3628.     BH = 06h
  3629.     BL = position in list to report
  3630.     CH = 6941h ('iA')
  3631. Return: CF clear if successful
  3632.         AH = 00h (SMBus OK)
  3633.         BH = number of SMBus devices
  3634.         BL = SMBus Device Address of device at position BL in list
  3635.         (see #0405)
  3636.     CF set if error
  3637.         AH = error code (06h,0Ah,86h) (see #0403)
  3638. Desc:    retrieves already assigned SMBus device addresses
  3639. Notes:    this function is supported in INT 15h mode only
  3640.     bit 0 of the device address indicates read/write, so a device may
  3641.       be listed at both xxxxxxx0b and xxxxxxx1b
  3642.  
  3643. (Table 0405)
  3644. Values for System Management Bus predefined device addresses:
  3645.  10h    SMBus host
  3646.  12h    Smart Battery charger
  3647.  14h    Smart Battery selector
  3648.  16h    Smart Battery
  3649.  18h    SMBus Alert response
  3650.  50h    ACCESS.bus host
  3651.  58h    LCD contrast controller
  3652.  5Ah    CCFL backlight driver
  3653.  6Eh    ACCESS.bus default address
  3654.  80h-86h PCMCIA socket controllers
  3655.  88h    VGA graphics controller
  3656.  90h-96h unrestricted addresses
  3657.  82h    SMBus device default address
  3658. --------X-1553B0BH07-------------------------
  3659. INT 15 - Intel System Management Bus - RETRIEVE CRITICAL MESSAGES
  3660.     AX = 53B0h
  3661.     BH = 07h
  3662.     CX = 6941h ('iA')
  3663. Return: CF clear if successful
  3664.         AH = 00h (SMBus OK)
  3665.         AL = device address
  3666.         BX = device message
  3667.     CF set if error
  3668.         AH = error code (05h,07h,08h,09h,0Ah,86h) (see #0403)
  3669. Desc:    retrieves oldest queued critical message from an SMBus device to the
  3670.       host
  3671. Notes:    up to five messages are queued; if the queue is full, messages will be
  3672.       lost and error 09h returned
  3673. --------X-1553B0BH08-------------------------
  3674. INT 15 - Intel System Management Bus - RESERVED
  3675.     AX = 53B0h
  3676.     BH = 08h-0Fh
  3677. --------X-1553B0BH10-------------------------
  3678. INT 15 - Intel System Management Bus - REQUEST
  3679.     AX = 53B0h
  3680.     BH = 10h
  3681.     BL = protocol (see #0406)
  3682.     CH = device address
  3683.     CL = device command (see #0407)
  3684.     DH = MSB Data or block length (for BlockWrite)
  3685.     DL = LSB Data or first byte of block (for BlockWrite)
  3686. Return: CF clear if successful
  3687.         AH = 00h or 80h (SMBus OK)
  3688.          (80h indicates a previously unreported SMI took place)
  3689.     CF set if error
  3690.         AH = error code (05h,10h,11h,12h,13h,14h,17h,19h,1Ah,86h)
  3691.           (see #0403)
  3692. Desc:    request access to a device on the SMBus
  3693. SeeAlso: AX=53B0h/BH=11h, AX=53B0h/BH=13h
  3694.  
  3695. (Table 0406)
  3696. Values for Intel System Management Bus protocol codes:
  3697.  00h    Quick Command
  3698.  01h    Send Byte
  3699.  02h    Receive Byte
  3700.  03h    Write Byte
  3701.  04h    Read Byte
  3702.  05h    Write Word
  3703.  06h    Read Word
  3704.  07h    Block Write
  3705.  08h    Block Read
  3706.  09h    Process Call
  3707.  0Ah-FFh reserved
  3708. SeeAlso: #0407
  3709.  
  3710. (Table 0407)
  3711. Values for Intel System Management Bus Smart Battery command codes:
  3712.  Cmd    Protocol(s)    Description
  3713.  00h    Rd/Wr Word    "ManufacturerAccess" implementation-specific
  3714.  01h    Rd/Wr Word    get/set Low Capacity Alarm threshold
  3715.  02h    Rd/Wr Word    get/set Remaining Time Alarm value (in minutes)
  3716.  03h    Rd/Wr Word    get/set battery characteristics (see #0408)
  3717.  04h    Rd/Wr Word    "AtRate" indicate charge/discharge rate
  3718.  05h    Read Word    "AtRateTimeToFull" time to completely charge (in min.)
  3719.  06h    Read Word    "AtRateTimeToEmpty" time to entirely discharge (min.)
  3720.  07h    Read Word    "AtRateOK" boolean: can battery supply another 10sec?
  3721.  08h    Read Word    internal battery temperature (in 0.1 Kelvins)
  3722.  09h    Read Word    current battery voltage in millivolts
  3723.  0Ah    Read Word    current flowing through battery in milliamperes
  3724.             (positive if charging, negative if discharging)
  3725.  0Bh    Read Word    average current over the past minute
  3726.  0Ch    Read Word    expected error margin in capacity computations in %
  3727.  0Dh    Read Word    predicted remaining charge as % of full charge
  3728.  0Eh    Read Word    predicted remaining charge as % of design capacity
  3729.  0Fh    Read Word    predicted remaining charge in mAh or 10mWh
  3730.  10h    Read Word    predicted full charge capacity in mAh or 10mWh
  3731.  11h    Read Word    predicted remaining battery life in minutes
  3732.             FFFFh = not discharging
  3733.  12h    Read Word    rolling average of predicted life over past minute
  3734.  13h    Read Word    rolling average of predicted charge time over past min.
  3735.             FFFFh = not charging
  3736.  14h    Read Word    get battery's desired charging current in mA
  3737.  14h    Write Word    set charging current in mA
  3738.  15h    Read Word    get battery's desired charging current in mV
  3739.  15h    Write Word    set desired charging voltage in mV
  3740.  16h    Read Word    get current battery status (see #0409)
  3741.  17h    Read Word    get number of charge/discharge cycles for battery
  3742.  18h    Read Word    get design capacity in mAh or 10mWh
  3743.  19h    Read Word    get design voltage
  3744.  1Ah    Read Word    get specification information (see #0410)
  3745.  1Bh    Read Word    get manufacture date (see #1317 at INT 21/AX=5700h)
  3746.  1Ch    Read Word    get serial number
  3747.  1Dh-1Fh        reserved
  3748.  20h    Read Block    get manufacturer's name
  3749.  21h    Read Block    get device name
  3750.  22h    Read Block    get device chemistry (see #0411)
  3751.  23h    Read Block    get manufacturer data
  3752.  24h-2Eh        reserved
  3753.  2Fh            manufacturer-specific
  3754.  30h-3Bh        reserved
  3755.  3Ch-3Fh        manufacturer-specific
  3756. Note:    bits 7-6 are reserved for addressing multiple batteries in a future
  3757.       version of the specification
  3758. SeeAlso: #0406
  3759.  
  3760. Bitfields for Smart Battery battery characteristics:
  3761. Bit(s)    Description    (Table 0408)
  3762.  0    battery has internal charge controller (read-only)
  3763.  1    primary/secondary battery support (read-only)
  3764.  6-2    reserved
  3765.  7    conditioning cycle requested
  3766.  8    internal charge controller enabled
  3767.  9    battery operating in primary mode
  3768.  13-10    reserved
  3769.  14    disable broadcast to charger
  3770.  15    report capacity in units of 10mW / 10mWh instead of mA / mAh
  3771. SeeAlso: #0407,#0409
  3772.  
  3773. Bitfields for Smart Battery battery status:
  3774. Bit(s)    Description    (Table 0409)
  3775.  15    overcharged
  3776.  14    terminate-charge alarm
  3777.  13    reserved
  3778.  12    over-temperature alarm
  3779.  11    terminate-discharge alarm
  3780.  10    reserved
  3781.  9    remaining-capacity alarm
  3782.  8    remaining-time alarm
  3783.  7    initialized
  3784.  6    charging
  3785.  5    fully charged
  3786.  4    fully discharged
  3787.  3-0    error codes
  3788.     0000 OK
  3789.     0001 busy
  3790.     0010 reserved command
  3791.     0011 unsupported command
  3792.     0100 access denied (tried to write to read-only value)
  3793.     0101 overflow/underflow
  3794.     0110 bad size
  3795.     0111 unknown error
  3796. SeeAlso: #0407,#0408,#0410
  3797.  
  3798. Bitfields for Smart Battery specification information:
  3799. Bit(s)    Description    (Table 0410)
  3800.  3-0    SmartBattery specification minor revision number
  3801.  7-4    SmartBattery specification version number
  3802.  11-8    voltage scaling (0-3, multiply voltages by 10^scale)
  3803.  15-12    current scaling (0-3, multiply currents by 10^scale)
  3804. SeeAlso: #0407,#0409
  3805.  
  3806. (Table 0411)
  3807. Values for Smart Battery device chemistry (not case-sensitive):
  3808.  "LION"    Lithium ion
  3809.  "NiMH"    Nickel metal hydride
  3810.  "PbAc"    lead-acid
  3811.  "NiCd" Nickel Cadmium
  3812.  "NiZn" Nickel Zinc
  3813.  "RAM"    rechargeable Alkaline Manganese
  3814.  "ZnAr" Zinc-Air
  3815. SeeAlso: #0407
  3816. --------X-1553B0BH11-------------------------
  3817. INT 15 - Intel System Management Bus - REQUEST CONTINUATION
  3818.     AX = 53B0h
  3819.     BH = 11h
  3820.     BL = protocol (see #0406)
  3821.     CH = device address
  3822.     CL = number of valid bytes in DX (1 or 2)
  3823.     DH = MSB Data (CL = 1 or 2)
  3824.     DL = LSB Data (CL = 2)
  3825. Return: CF clear if successful
  3826.         AH = 00h (SMBus OK)
  3827.         CL = SMBus status
  3828.         00h SMBus hardware not ready for more data
  3829.         01h SMBus hardware ready for 2 more data bytes
  3830.     CF set if error
  3831.         AH = error code (05h,11h,13h,15h,16h,18h,1Bh,86h) (see #0403)
  3832. Desc:    continue WriteBlock protocol started with function 10h
  3833. SeeAlso: AX=53B0h/BH=10h, AX=53B0h/BH=13h
  3834. --------X-1553B0BH12-------------------------
  3835. INT 15 - Intel System Management Bus - REQUEST ABORT
  3836.     AX = 53B0h
  3837.     BH = 12h
  3838.     BL = protocol (see #0406)
  3839.     CH = device address
  3840.     CL = device command
  3841. Return: CF clear if successful
  3842.         AH = 00h (SMBus OK)
  3843.     CF set if error
  3844.         AH = error code (05h,13h,15h,16h,86h) (see #0403)
  3845. Desc:    stop the currently pending SMBus request; usually used to terminate
  3846.       a request after an SMI Detected error
  3847. --------X-1553B0BH13-------------------------
  3848. INT 15 - Intel System Management Bus - REQUEST DATA AND STATUS
  3849.     AX = 53B0h
  3850.     BH = 13h
  3851.     BL = protocol (see #0406)
  3852.     CH = device address
  3853.     CL = device command
  3854. Return: CF clear if successful
  3855.         AH = 00h (SMBus OK)
  3856.         CH = status
  3857.         00h no data pending, transaction complete
  3858.         01h no data pending, transaction continues
  3859.         02h data pending
  3860.         CL = number of valid bytes in DX (0-2)
  3861.         DH = MSB data
  3862.         DL = LSB data
  3863.     CF set if error
  3864.         AH = error code (05h,10h,11h,13h,15h,16h,18h,1Bh,86h) (see #0403)
  3865. Desc:    determine when a transaction is complete, gather data returned by read
  3866.       transactions
  3867. Note:    for Block Read protocol (08h), first call returns block    length in DH
  3868.       and the first byte of the block in DL
  3869. ----------1554-------------------------------
  3870. INT 15 - IBM SurePath BIOS - Officially "Private" Function
  3871.     AH = 54h
  3872. SeeAlso: AH=07h"IBM",AH=3Eh"IBM"
  3873. --------T-155400-----------------------------
  3874. INT 15 C - Omniview Multitasker - INSTALLATION NOTIFICATION
  3875.     AX = 5400h
  3876.     ES:BX -> device information tables
  3877.     DI:DX -> dispatcher entry point
  3878. Note:    called by OmniView to notify programs loaded before OmniView of state
  3879.       changes inside OmniView
  3880. SeeAlso: AX=5407h,INT 2F/AX=DE00h
  3881. --------T-155401-----------------------------
  3882. INT 15 C - Omniview Multitasker - PROCESS CREATION
  3883.     AX = 5401h
  3884.     ES:BX = process handle
  3885. Note:    called by OmniView to notify programs loaded before OmniView of state
  3886.       changes inside OmniView
  3887. SeeAlso: AX=5402h,INT 2F/AX=DE04h
  3888. --------T-155402-----------------------------
  3889. INT 15 C - Omniview Multitasker - PROCESS DESTRUCTION
  3890.     AX = 5402h
  3891.     ES:DX = process handle
  3892. Note:    called by OmniView to notify programs loaded before OmniView of state
  3893.       changes inside OmniView
  3894. SeeAlso: AX=5401h,INT 2F/AX=DE05h
  3895. --------T-155403-----------------------------
  3896. INT 15 C - Omniview Multitasker - SAVE
  3897.     AX = 5403h
  3898.     ES:DX = process swapping out
  3899. Note:    called by OmniView to notify programs loaded before OmniView of state
  3900.       changes inside OmniView
  3901. SeeAlso: AX=5404h,INT 2F/AX=DE08h
  3902. --------T-155404-----------------------------
  3903. INT 15 C - Omniview Multitasker - RESTORE
  3904.     AX = 5404h
  3905.     ES:DX = process swapping in
  3906. Note:    called by OmniView to notify programs loaded before OmniView of state
  3907.       changes inside OmniView
  3908. SeeAlso: AX=5403h,INT 2F/AX=DE09h
  3909. --------T-155405-----------------------------
  3910. INT 15 C - Omniview Multitasker - SWITCHING TO BACKGROUND
  3911.     AX = 5405h
  3912.     ES:DX = process swapping in
  3913. Note:    called by OmniView to notify programs loaded before OmniView of state
  3914.       changes inside OmniView
  3915. SeeAlso: AX=5406h
  3916. --------T-155406-----------------------------
  3917. INT 15 C - Omniview Multitasker - SWITCHING TO FOREGROUND
  3918.     AX = 5406h
  3919.     ES:DX = process swapping in
  3920. Note:    called by OmniView to notify programs loaded before OmniView of state
  3921.       changes inside OmniView
  3922. SeeAlso: AX=5405h
  3923. --------T-155407-----------------------------
  3924. INT 15 C - Omniview Multitasker - EXIT NOTIFICATION
  3925.     AX = 5407h
  3926. Note:    called by OmniView to notify programs loaded before OmniView of state
  3927.       changes inside OmniView
  3928. SeeAlso: AX=5400h,INT 2F/AX=DE03h
  3929. --------b-1560------------------------------------
  3930. INT 15 - HUNTER 16 - SET SYSTEM CLOCK SPEED
  3931.     AH = 60h
  3932.     AL = new speed
  3933.         00h normal (8 MHz)
  3934.         01h Slow Mode 1 (4 MHz)
  3935.         02h Slow Mode 2 (2 MHz)
  3936. Note:    the Husky Hunter 16 is an 8088-based ruggedized laptop.     Other family
  3937.       members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk.
  3938. SeeAlso: AX=6301h
  3939. --------p-156000-----------------------------
  3940. INT 15 U - HP 100LX/200LX - GET MAIN BATTERY LEVEL
  3941.     AX = 6000h
  3942. Return: AX = battery level
  3943. Note:    multiply the returned value with 1Bh and add 622h to get millivolts
  3944. SeeAlso: AX=6001h,AX=6002h,AX=6003h,AX=6004h
  3945. --------p-156001-----------------------------
  3946. INT 15 U - HP 100LX/200LX - GET BACKUP BATTERY LEVEL
  3947.     AX = 6001h
  3948. Return: AX = battery level
  3949. Note:    multiply the returned value with 1Bh and add 622h to get millivolts
  3950. SeeAlso: AX=6000h,AX=6002h
  3951. --------p-156002-----------------------------
  3952. INT 15 U - HP 100LX/200LX - GET POWER INFO
  3953.     AX = 6002h
  3954. Return: AL = power settings (see #0412)
  3955. SeeAlso: AX=6000h,AX=6003h,AX=6004h
  3956.  
  3957. Bitfields for power settings:
  3958. Bit(s)    Description    (Table 0412)
  3959.  0-1    unused ???
  3960.  2    card battery status low (OK if bit clear)
  3961.  3    battery charging off (disabled if bits 3-5 clear)
  3962.  4    battery charging slow
  3963.  5    battery charging fast
  3964.  6    power adaptor active
  3965.  7    battery type NiCad (alkaline if bit clear)
  3966. --------p-156003-----------------------------
  3967. INT 15 U - HP 100LX/200LX - SET MAIN BATTERY TYPE
  3968.     AX = 6003h
  3969.     BL = battery type
  3970.         00h alkaline
  3971.         01h NiCad
  3972. SeeAlso: AX=6000h,AX=6004h
  3973. --------p-156004-----------------------------
  3974. INT 15 U - HP 100LX/200LX - SET BATTERY CHARGING MODE
  3975.     AX = 6004h
  3976.     BL = charging
  3977.         00h disabled
  3978.         01h enabled
  3979. SeeAlso: AX=6000h,AX=6003h
  3980. --------b-1561------------------------------------
  3981. INT 15 - HUNTER 16 - GET POWER LEVEL
  3982.     AH = 61h
  3983. Return: AH = percentage of full power left (0..100)
  3984. Desc:    determine how much battery power is left
  3985. SeeAlso: AH=62h,AH=66h,AH=73h"HUNTER"
  3986. --------b-1561-------------------------------
  3987. INT 15 U - HP 100LX/200LX - SET ANNOUNCIATORS POSITION
  3988.     AH = 61h
  3989.     AL = position (20h = left, 60h = right)
  3990. Note:    The announciators are the indicator symbols for the Shift and Fn keys
  3991.       in the bottom line
  3992. SeeAlso: AH=62h"HP",INT 16/AH=02h
  3993. --------b-1562------------------------------------
  3994. INT 15 - HUNTER 16 - SET LOW POWER THRESHOLD
  3995.     AH = 62h
  3996.     AL = level (00h 5%, 01h 10%, ... 12h 95%)
  3997.     BX = interval between power low warnings in seconds (1..600)
  3998. Return: AH = Status
  3999. Desc:    set the level (relative to full power) when power-low warnings begin
  4000.       and the interval between the warnings
  4001. SeeAlso: AH=61h,AH=65h,AH=66h
  4002. --------b-1562-------------------------------
  4003. INT 15 U - HP 100LX/200LX - SET DISPLAY CONTRAST
  4004.     AH = 62h
  4005.     BL = contrast (00h-1Fh, 1Fh is the darkest)
  4006. SeeAlso: AH=47h"HP",AH=61h"HP"
  4007. --------b-156300----------------------------------
  4008. INT 15 - HUNTER 16 - GET IDLE TIMEOUT
  4009.     AX = 6300h
  4010. Return: AH = status
  4011.     BX = timeout in seconds (0-3600)
  4012. Desc:    get the idle timeout value, the interval without keyboard or
  4013.        communications activity before the system shuts down
  4014. SeeAlso: AX=6301h
  4015. --------b-156301----------------------------------
  4016. INT 15 - HUNTER 16 - SET IDLE TIMEOUT
  4017.     AX = 6301h
  4018.     BX = timeout in seconds (0-3600)
  4019. Desc:    sets the idle timeout value, the interval without keyboard or
  4020.       communications activity before the system shuts down
  4021. SeeAlso: AX=6300h
  4022. --------b-1564------------------------------------
  4023. INT 15 - HUNTER 16 - CONTROL RESUME MODE
  4024.     AH = 64h
  4025.     AL = new state
  4026.         00h disable Resume mode
  4027.         01h enable Resume mode
  4028. Return: AH = status
  4029. Desc:    turn Resume mode on or off. In Resume mode the system starts in
  4030.       the application that was running when it shut down as if nothing
  4031.       had happened.
  4032. SeeAlso: AH=67h,AH=68h,AH=69h
  4033. --------b-1565------------------------------------
  4034. INT 15 - HUNTER 16 - AUTHORISE CHARGING
  4035.     AH = 65h
  4036.     AL = charging level
  4037.         01h charging not allowed
  4038.         02h charging allowed until power down
  4039.         03h charging allowed until batteries changed or fail.
  4040.         Ask user if charging is still allowed on next poweron
  4041.         04h charging allowed indefinitely
  4042.     BX = 0203h
  4043.     CX = 0405h
  4044.     DX = 0607h
  4045. Return: AH = status
  4046. SeeAlso: AH=66h,AH=68h
  4047. --------b-1566------------------------------------
  4048. INT 15 - HUNTER 16 - SET BATTERY LEVEL
  4049.     AH = 66h
  4050.     AL = level in percent of maximum (0..100)
  4051. Return: AH = status
  4052. SeeAlso: AH=61h,AH=65h
  4053. --------b-1567------------------------------------
  4054. INT 15 - HUNTER 16 - CONTROL STOP MODE
  4055.     AH = 67h
  4056.     AL = mode when waiting for input
  4057.         00h use STOP mode (allows communication)
  4058.         01h use HALT mode (disallows communication)
  4059. Return: AH = status
  4060. Desc:    select the power save mode to use when waiting for input
  4061. SeeAlso: AH=69h
  4062. --------b-1568------------------------------------
  4063. INT 15 - HUNTER 16 - REQUEST POWER DOWN
  4064.     AH = 68h
  4065. Desc:    turns off the Hunter 16 if power down is allowed (see AH=69h)
  4066. SeeAlso: AH=69h
  4067. --------b-1569------------------------------------
  4068. INT 15 - HUNTER 16 - CONTROL POWER DOWN AVAILABILITY
  4069.     AH = 69h
  4070.     AL = mode
  4071.         00h inhibit power down
  4072.         01h allow power down
  4073. Return: AH = status
  4074. SeeAlso: AH=67h,AH=68h,AH=6Ah
  4075. --------b-156A------------------------------------
  4076. INT 15 - HUNTER 16 - CONTROL SLOW MODE
  4077.     AH = 6Ah
  4078.     AL = mode
  4079.         00h inhibit Slow mode
  4080.         01h allow Slow mode
  4081. Return: AH = status
  4082. SeeAlso: AH=69h
  4083. --------b-156B------------------------------------
  4084. INT 15 - HUNTER 16 - GET ROM BIOS VERSION
  4085.     AH = 6Bh
  4086. Return: BH = version number (ASCII)
  4087.     BL = release number (ASCII)
  4088.     CH = major??? release number (ASCII)
  4089.     CL = minor??? release number (ASCII)
  4090. SeeAlso: AH=6Ch
  4091. --------b-156C------------------------------------
  4092. INT 15 - HUNTER 16 - GET SERIAL NUMBER
  4093.     AH = 6Ch
  4094. Return: BL:CX = BCD serial number
  4095. Note:    when shipped, all Hunter 16s have the same Serial Number, but a
  4096.       different number can be stored (see AH=72h)
  4097. SeeAlso: AH=6Bh,AH=72h
  4098. --------b-156D------------------------------------
  4099. INT 15 - HUNTER 16 - GET EVENT DETAIL
  4100.     AH = 6Dh
  4101. Return: AH = 00h if successful
  4102.     CX:BX = event flags bit 0..31 (see #0413)
  4103. Note:    this function allows testing for events
  4104. SeeAlso: AH=6Eh,AH=6Fh
  4105.  
  4106. Bitfields for HUNTER 16 events:
  4107. Bit(s)    Description    (Table 0413)
  4108.  6    RI received
  4109.  5    RTC Alarm
  4110.  4    data received on COM2
  4111.  3    data received on COM1
  4112.  2    error on COM2
  4113.  1    error on COM1
  4114.  0    PWR button pressed
  4115. --------b-156E------------------------------------
  4116. INT 15 - HUNTER 16 - ENABLE/TRAP EVENT
  4117.     AH = 6Eh
  4118.     AL = Software Interrupt
  4119.           00h  do not trap event
  4120.           else trap as software interrupt number AL
  4121.     BH = event number (see AH=6Dh)
  4122.     BL = enable mask
  4123.         00h disable event
  4124.         01h enable event
  4125. Return: AH = 00h if successful
  4126. SeeAlso: AH=6Dh,AH=6Fh
  4127. --------b-156F------------------------------------
  4128. INT 15 - HUNTER 16 - ACKNOWLEDGE EVENT
  4129.     AH = 6Fh
  4130.     AL = event number (see AH=6Dh)
  4131. Return: AH = 00h if successful
  4132. Desc:    Acknowledges the event, so the next similar event can be detected
  4133. SeeAlso: AH=6Dh"HUNTER",AH=6Eh
  4134. --------b-1570------------------------------------
  4135. INT 15 - HUNTER 16 - CONTROL SOUND
  4136.     AH = 70h
  4137.     AL = new state
  4138.         00h disable sound
  4139.         else enable sound
  4140. Note:    the Husky Hunter 16 is an 8088-based ruggedized laptop.     Other family
  4141.       members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk.
  4142. --------x-157000-----------------------------
  4143. INT 15 - Tandy 1000SL/TL - READ FROM EEPROM
  4144.     AX = 7000h
  4145.     BL = number of word to read (00h-3Fh)
  4146. Return: CF clear if function supported
  4147.         DX = contents of EEPROM word
  4148. Note:    newer Tandy 1000-series machines use EEPROM instead of CMOS RAM in
  4149.       the clock chip to store system configuration information
  4150. SeeAlso: AX=7001h
  4151. --------x-157001-----------------------------
  4152. INT 15 - Tandy 1000SL/TL - WRITE TO EEPROM
  4153.     AX = 7001h
  4154.     BL = number of word to read (00h-3Fh)
  4155.     DX = new value for EEPROM word
  4156. Return: CF clear if function supported
  4157. Note:    the EEPROMs are normally written only by the system setup program;
  4158.       changing the values can badly mess up a Tandy
  4159. SeeAlso: AX=7000h
  4160. ----------157002-----------------------------
  4161. INT 15 U - Tandy 1000 Model ??? - GET ROM PAGE
  4162.     AX = 7002h
  4163. Return: AL = ROM page mapped at 0E0000h (0-6 (13?))
  4164. Note:    some Tandy machines have DOS and DeskMate in a 512k paged ROM.    The
  4165.       BIOS uses this call to determine what ROM page is mapped in the 64k
  4166.       segment at 0E0000h.
  4167.     the 1000TL has 8 64k ROM pages; page 7 is permanently mapped at
  4168.       0F0000h.  There may be 16 32k ROM pages on other systems.
  4169. SeeAlso: AX=7003h,INT E0"DeskMate"
  4170. ----------157003-----------------------------
  4171. INT 15 U - Tandy 1000 Model ??? - SET ROM PAGE
  4172.     AX = 7003h
  4173.     DL = ROM page to be mapped at 0E0000h (0-6 (13?))
  4174. Return: CF clear if valid ROM page specified
  4175. Note:    Some Tandy machines have DOS and DeskMate in a 512k paged ROM.    The
  4176.       BIOS uses this call to map ROM pages in the 64k segment at 0E0000h.
  4177.     The 1000TL has 8 64k ROM pages; page 7 is permanently mapped at
  4178.       0F0000h.  There may be 16 32k ROM pages on other systems.
  4179. SeeAlso: AX=7002h,INT E0"DeskMate"
  4180. --------b-1571------------------------------------
  4181. INT 15 - HUNTER 16 - SELECT POWER UP KEYS
  4182.     AH = 71h
  4183.     BL = column
  4184.     BH = row
  4185.     AL = column switch (00h disable, 01h enable)
  4186.     CL = row switch (00h disable, 01h enable)
  4187. Return: AH = status
  4188. SeeAlso: AH=7Bh,AH=88h
  4189. --------b-157200----------------------------------
  4190. INT 15 - HUNTER 16 - RESET SERIAL NUMBER
  4191.     AX = 7200h
  4192. Return: AH = 00h if successful
  4193. Desc:    reset the serial number to the default serial number present when the
  4194.       Hunter 16 was shipped
  4195. SeeAlso: AH=6Ch,AH=72h
  4196. --------b-1572------------------------------------
  4197. INT 15 - HUNTER 16 - REDIRECT SERIAL NUMBER
  4198.     AH = 72h
  4199.     AL nonzero
  4200.     DS:BX -> new serial number (6 ASCII digits)
  4201. Return: AH = 00h if successful
  4202. Desc:    install a new serial number
  4203. SeeAlso: AH=6Ch,AX=7200h
  4204. --------b-1573------------------------------------
  4205. INT 15 - HUNTER 16 - GET ORACLE GT POWER LEVEL
  4206.     AH = 73h
  4207.     AL = drive (0: A:, 1: B:)
  4208. Return: AH = status
  4209.         00h successful
  4210.         FFh Oracle GT drive not connected
  4211.     AL = power level in percent of maximum (0..100)
  4212. Desc:    get the power remaining in the Oracle GT batteries
  4213. SeeAlso: AH=61h
  4214. --------b-1574------------------------------------
  4215. INT 15 - HUNTER 16 - SET BACKLIGHT POWER UP STATE
  4216.     AH = 74h
  4217.     AL = new level
  4218.         01h off
  4219.         02h unchanged
  4220.         03h change level
  4221.         BL = desired level (00h-7Fh)
  4222. Return: AH = status
  4223. Desc:    select the backlight level to use when the Hunter is next turned on
  4224. SeeAlso: AH=64h,AH=75h,INT 10/AH=64h,INT 10/AH=78h
  4225. --------b-1575------------------------------------
  4226. INT 15 - HUNTER 16 - SET CONTRAST POWER UP STATE
  4227.     AH = 75h
  4228.     AL = new level
  4229.         01h off
  4230.         02h unchanged
  4231.         03h change level
  4232.         BL = desired level (00h-7Fh)
  4233. Return: AH = status
  4234. Desc:    select the LCD contrast level to use when the Hunter is next turned on
  4235. SeeAlso: AH=63h,AH=74h
  4236. --------b-1576------------------------------------
  4237. INT 15 - HUNTER 16 - CONTROL POWER SAVE
  4238.     AH = 76h
  4239.     BX = power save control (see #0414)
  4240. SeeAlso: AH=74h
  4241.  
  4242. Bitfields for HUNTER 16 power save control:
  4243. Bit(s)    Description    (Table 0414)
  4244.  0    power save enabled
  4245.  1    inhibit power save when waiting for COM1 data
  4246.  2    inhibit power save when waiting for COM2 data
  4247.  3    inhibit power save when waiting for data from barcode wand
  4248.  4    inhibit power up on timer tick
  4249. --------b-1579------------------------------------
  4250. INT 15 - HUNTER 16 - REDIRECT LPT1
  4251.     AH = 79h
  4252.     AL = port to which to redirect (00h COM1, 01h COM2)
  4253. --------b-157A------------------------------------
  4254. INT 15 - HUNTER 16 - INVOKE HOT KEY
  4255.     AH = 7Ah
  4256. Desc:    this function has the same effect as pressing the HOT key
  4257. SeeAlso: AH=7Bh
  4258. --------b-157B------------------------------------
  4259. INT 15 - HUNTER 16 - CONTROL HOT KEY
  4260.     AH = 7Bh
  4261.     AL = 00h prevent HOT key
  4262.         else allow HOT key
  4263. Desc:    Allow or prevent the HOT key function which is used to examine and
  4264.       change the Hunter setup
  4265. SeeAlso: AH=71h,AH=7Ah,AH=7Ch
  4266. --------b-157C------------------------------------
  4267. INT 15 - HUNTER 16 - CONTROL HOT KEY POWER OPTION
  4268.     AH = 7Ch
  4269.     AL = 00h prevent HOT key power option
  4270.         else allow HOT key power option
  4271. Desc:    allow or prevent changing the power options
  4272. SeeAlso: AH=7Bh,AH=7Dh
  4273. --------b-157D------------------------------------
  4274. INT 15 - HUNTER 16 - OVERRIDE LOW POWER TURN OFF
  4275.     AH = 7Dh
  4276.     AL = 00h turn off after 10 warnings
  4277.         else never turn off
  4278. Desc:    specify whether the Hunter 16 turns off after 10 low power warnings
  4279. SeeAlso: AH=7Ch
  4280. --------b-157E------------------------------------
  4281. INT 15 - HUNTER 16 - CONTROL BATTERY CHANGE FACILITIES (APM)
  4282.     AH = 7Eh
  4283.     AL = 00h do not prompt
  4284.         else prompt
  4285. Desc:    select whether the user is prompted for the battery state if the
  4286.       battery cap has been off when the system is turned on
  4287. SeeAlso: AH=7Fh
  4288. --------b-157F------------------------------------
  4289. INT 15 - HUNTER 16 - SET BATTERY TYPE (APM)
  4290.     AH = 7Fh
  4291.     AL = battery type
  4292.         00h     non-rechargeable
  4293.         else rechargeable
  4294. SeeAlso: AH=7Eh
  4295. --------B-1580-------------------------------
  4296. INT 15 C - OS HOOK - DEVICE OPEN (AT,XT286,PS)
  4297.     AH = 80h
  4298.     BX = device ID
  4299.     CX = process ID
  4300.     CF clear
  4301. Return: CF clear if successful
  4302.         AH = 00h
  4303.     CF set on error
  4304.         AH = status (see #0415)
  4305. Note:    this function should be hooked by a multitasker which wishes to keep
  4306.       track of device ownership; the default BIOS handler merely returns
  4307.       successfully
  4308. SeeAlso: AH=81h,AH=82h
  4309.  
  4310. (Table 0415)
  4311. Values for status:
  4312.  80h    invalid command (PC,PCjr)
  4313.  86h    function not supported (XT)
  4314. --------b-1580------------------------------------
  4315. INT 15 - HUNTER 16 - GET/SET BATTERY CAPACITY (APM)
  4316.     AH = 80h
  4317.     AL = function
  4318.         00h get
  4319.         Return: AL = capacity (500mA + AL * 50mA, max 40 = 2500mA)
  4320.         else set
  4321.         BL = battery capacity (same as AL above)
  4322. SeeAlso: AH=61h"HUNTER",AH=81h"HUNTER"
  4323. --------B-1581-------------------------------
  4324. INT 15 C - OS HOOK - DEVICE CLOSE
  4325.     AH = 81h
  4326.     BX = device ID
  4327.     CX = process ID
  4328.     CF clear
  4329. Return: CF clear if successful
  4330.         AH = 00h
  4331.     CF set on error
  4332.         AH = status (see #0415)
  4333. Note:    this function should be hooked by a multitasker which wishes to keep
  4334.       track of device ownership; the default BIOS handler merely returns
  4335.       successfully
  4336. SeeAlso: AH=80h,AH=82h
  4337. --------b-1581------------------------------------
  4338. INT 15 - HUNTER 16 - CONTROL POWER OUTPUT
  4339.     AH = 81h
  4340.     AL = new state of power output (00h off, nonzero on)
  4341. Desc:    turn the +5V low power output on or off
  4342. SeeAlso: AH=80h"HUNTER"
  4343. --------B-1582-------------------------------
  4344. INT 15 C - OS HOOK - PROGRAM TERMINATION
  4345.     AH = 82h
  4346.     BX = process ID
  4347.     CF clear
  4348. Return: CF clear if successful
  4349.         AH = 00h
  4350.     CF set on error
  4351.         AH = status (see #0415)
  4352. Notes:    closes all devices opened by the given process ID with function 80h
  4353.     this function should be hooked by a multitasker which wishes to keep
  4354.       track of device ownership; the default BIOS handler merely returns
  4355.       successfully
  4356. SeeAlso: AH=80h,AH=81h
  4357. --------b-1582------------------------------------
  4358. INT 15 - HUNTER 16 - SOUND OUTPUT
  4359.     AH = 82h
  4360.     DX = length (duration in seconds = DX * 666670 / frequency)
  4361.     BX = pitch (see #0416)
  4362. Desc:    Sound the tone specified in BX for the duration in DX
  4363. SeeAlso: AX=1019h
  4364.  
  4365. (Table 0416)
  4366. Values for HUNTER 16 sound pitch:
  4367. BX(dec)     Note    Frequency    BX(dec)     Note    Frequency
  4368.   425    G    1568.000     1515    A     440.000
  4369.   451    F#    1479.503     1605    G#     415.307
  4370.   477    F    1396.900     1701    G     392.000
  4371.   506    E    1318.500     1802    F#     369.998
  4372.   536    D#    1244.523     1909    F     349.230
  4373.   568    D    1174.700     2022    E     329.630
  4374.   601    C#    1108.749     2143    D#     311.127
  4375.   637    C    1046.500     2270    D     293.660
  4376.   675    B     958.770     2405    C#     277.183
  4377.   715    A#     932.329     2548    MID C     261.630
  4378.   758    A     880.000     2700    B     246.940
  4379.   803    G#     830.609     2860    A#     233.081
  4380.   850    G     783.990     3030    A     220.000
  4381.   901    F#     739.990     3210    G#     207.654
  4382.   954    F     698.460     3401    G     196.000
  4383.  1011    E     659.260     3604    F#     184.996
  4384.  1071    D#     622.257     3818    F     174.610
  4385.  1135    D     587.330     4045    E     164.810
  4386.  1203    C#     554.365     4286    D#     155.560
  4387.  1274    C     523.250     4540    D     146.830
  4388.  1350    B     493.880     4668    C#     142.827
  4389.  1430    A#     466.162     4803    C     138.810
  4390. --------B-1583-------------------------------
  4391. INT 15 - BIOS - SET EVENT WAIT INTERVAL (AT,PS50+)
  4392.     AH = 83h
  4393.     AL = subfunction
  4394.         00h set interval
  4395.         CX:DX = microseconds to delay
  4396.         ES:BX -> byte whose high bit is to be set at end of interval
  4397.         01h cancel wait interval
  4398. Return: CF set on error or function already busy
  4399.         AH = status
  4400.         80h invalid command (PC,PCjr)
  4401.         86h function not supported (XT and later)
  4402.     CF clear if successful
  4403. Notes:    the resolution of the wait period is 977 microseconds on most systems
  4404.       because most BIOSes use the 1/1024 second fast interrupt from the AT
  4405.       real-time clock chip which is available on INT 70
  4406.     IBM AT 1/10/84 BIOS ignores AL and always performs subfunction 00h
  4407. SeeAlso: AH=41h,AH=86h,INT 70
  4408. --------b-1583------------------------------------
  4409. INT 15 - HUNTER 16 - CONTROL SCREEN SYNCHRONISATION
  4410.     AH = 83h
  4411.     AL = state of LCD window (00h disabled, nonzero enabled)
  4412. Desc:    Enable/disable the facility where the displayed window tracks the
  4413.       cursor output to keep the focus visible
  4414. --------B-1584-------------------------------
  4415. INT 15 - BIOS - JOYSTICK SUPPORT (XT after 11/8/82,AT,XT286,PS)
  4416.     AH = 84h
  4417.     DX = subfunction
  4418.         0000h read joystick switches
  4419.         Return: AL bits 7-4 = switch settings
  4420.         0001h read positions of joysticks
  4421.         Return: AX = X position of joystick A
  4422.             BX = Y position of joystick A
  4423.             CX = X position of joystick B
  4424.             DX = Y position of joystick B
  4425. Return: CF set on error
  4426.         AH = status (see #0415)
  4427.     CF clear if successful
  4428. Notes:    if no game port is installed, subfunction 0000h returns AL=00h (all
  4429.       switches open) and subfunction 0001h returns AX=BX=CX=DX=0000h
  4430.     a 250kOhm joystick typically returns 0000h-01A0h
  4431. SeeAlso: AH=84h"V20-XT-BIOS"
  4432. --------b-1584-------------------------------
  4433. INT 15 - V20-XT-BIOS - JOYSTICK SUPPORT
  4434.     AH = 84h
  4435.     DX = subfunction
  4436.         0000h read joystick switches
  4437.         Return: AL bits 7-4 = switch settings
  4438.         other: read positions of joysticks as indicated by bits 0-3
  4439.         Return: AX = X position of joystick A (if DX bit 0 set)
  4440.             BX = Y position of joystick A (if DX bit 1 set)
  4441.             CX = X position of joystick B (if DX bit 2 set)
  4442.             DX = Y position of joystick B (if DX bit 3 set)
  4443. Return: CF set on error
  4444.         AH = status (see #0415)
  4445.     CF clear if successful
  4446. Program: V20-XT-BIOS is a ROM BIOS replacement with extensions by Peter
  4447.        Koehlmann / c't magazine
  4448. SeeAlso: AH=84h"PS",INT 10/AH=0Eh/CX=ABCDh
  4449. --------b-158400----------------------------------
  4450. INT 15 - HUNTER 16 - GET DISKETTE PORT
  4451.     AX = 8400h
  4452.     BH = Drive (0: A:, 1: B:)
  4453. Return: AL = Port (0: COM1, >0: COM2)
  4454. Desc:    return the COM port used for the floppy drive
  4455. SeeAlso: AX=8401h
  4456. --------b-158401----------------------------------
  4457. INT 15 - HUNTER 16 - SET DISKETTE PORT
  4458.     AX = 8401h
  4459.     BH = Drive (0: A:, 1: B:)
  4460.     BL = Port (0: COM1, >0: COM2)
  4461. Desc:    set the COM port used for the floppy drive
  4462. SeeAlso: AX=8400h
  4463. --------B-1585-------------------------------
  4464. INT 15 C - OS HOOK - SysReq KEY ACTIVITY (AT,PS)
  4465.     AH = 85h
  4466.     AL = SysReq key action (00h pressed, 01h released)
  4467.     CF clear
  4468. Return: CF clear if successful
  4469.         AH = 00h
  4470.     CF set on error
  4471.         AH = status (see #0415)
  4472. Notes:    called by keyboard decode routine
  4473.     the default handler simply returns successfully; programs which wish
  4474.       to monitor the SysReq key must hook this call
  4475.     the SysReq key is often labeled SysRq
  4476. SeeAlso: INT 09
  4477. --------b-158500----------------------------------
  4478. INT 15 - HUNTER 16 - RESTORE POWER MENU (APM)
  4479.     AX = 8500h
  4480. Desc:    restore the standard power menu
  4481. SeeAlso: AX=8501h"HUNTER"
  4482. --------b-158501----------------------------------
  4483. INT 15 - HUNTER 16 - SET POWER MENU (APM)
  4484.     AX = 8501h
  4485.     BL = user software interrupt number
  4486. Desc:    install an alternate power menu routine
  4487. SeeAlso: AX=8500h"HUNTER"
  4488. --------B-1586-------------------------------
  4489. INT 15 - BIOS - WAIT (AT,PS)
  4490.     AH = 86h
  4491.     CX:DX = interval in microseconds
  4492. Return: CF clear if successful (wait interval elapsed)
  4493.     CF set on error or AH=83h wait already in progress
  4494.         AH = status (see #0415)
  4495. Note:    the resolution of the wait period is 977 microseconds on most systems
  4496.       because most BIOSes use the 1/1024 second fast interrupt from the AT
  4497.       real-time clock chip which is available on INT 70
  4498. SeeAlso: AH=41h,AH=83h,INT 1A/AX=FF01h,INT 70
  4499. --------b-1586------------------------------------
  4500. INT 15 - HUNTER 16 - GET/SET SCREEN ATTRIBUTE TABLE
  4501.     AH = 86h
  4502.     AL = function (00h get, nonzero set)
  4503.     BX = 1234h
  4504.     DS:SI -> 256-byte Attribute buffer
  4505. Note:    In text modes each character has its attribute byte XOR'd with the
  4506.       corresponding byte in the attribute table.  If the attribute is 15,
  4507.       15 is XOR'd with Table[15]
  4508. --------B-1587-------------------------------
  4509. INT 15 - SYSTEM - COPY EXTENDED MEMORY
  4510.     AH = 87h
  4511.     CX = number of words to copy (max 8000h)
  4512.     ES:SI -> global descriptor table (see #0418)
  4513. Return: CF set on error
  4514.     CF clear if successful
  4515.     AH = status (see #0417)
  4516. Notes:    copy is done in protected mode with interrupts disabled by the default
  4517.       BIOS handler; many 386 memory managers perform the copy with
  4518.       interrupts enabled
  4519.     this function is incompatible with the OS/2 compatibility box
  4520. SeeAlso: AH=88h,AH=89h,INT 1F/AH=90h
  4521.  
  4522. (Table 0417)
  4523. Values for extended-memory copy status:
  4524.  00h    source copied into destination
  4525.  01h    parity error
  4526.  02h    interrupt error
  4527.  03h    address line 20 gating failed
  4528.  80h    invalid command (PC,PCjr)
  4529.  86h    unsupported function (XT,PS30)
  4530.  
  4531. Format of global descriptor table:
  4532. Offset    Size    Description    (Table 0418)
  4533.  00h 16 BYTEs    zeros (used by BIOS)
  4534.  10h    WORD    source segment length in bytes (2*CX-1 or greater)
  4535.  12h  3 BYTEs    24-bit linear source address, low byte first
  4536.  15h    BYTE    source segment access rights (93h)
  4537.  16h    WORD    zero
  4538.  18h    WORD    destination segment length in bytes (2*CX-1 or greater)
  4539.  1Ah  3 BYTEs    24-bit linear destination address, low byte first
  4540.  1Dh    BYTE    destination segment access rights (93h)
  4541.  1Eh 18 BYTEs    zeros (used by BIOS to build CS and SS descriptors)
  4542. --------b-1587------------------------------------
  4543. INT 15 - HUNTER 16 - SET INT 72h VECTOR
  4544.     AH = 87h
  4545.     DS:DX = new service routine
  4546. Desc:    set the INT 72h vector which is called in 2 cases:
  4547.       - when the machine is about to turn off or reboot, INT 72h is called
  4548.         with AH=0
  4549.       - when the machine is powering up INT 72h is called with AH=01h
  4550. Note:    the actual INT 72h vector must also be changed with INT 21/AH=25h
  4551. --------B-1588-------------------------------
  4552. INT 15 - SYSTEM - GET EXTENDED MEMORY SIZE (286+)
  4553.     AH = 88h
  4554. Return: CF clear if successful
  4555.         AX = number of contiguous KB starting at absolute address 100000h
  4556.     CF set on error
  4557.         AH = status
  4558.         80h invalid command (PC,PCjr)
  4559.         86h unsupported function (XT,PS30)
  4560. Notes:    TSRs which wish to allocate extended memory to themselves often hook
  4561.       this call, and return a reduced memory size.    They are then free to
  4562.       use the memory between the new and old sizes at will.
  4563.     the standard BIOS only returns memory between 1MB and 16MB; use AH=C7h
  4564.       for memory beyond 16MB
  4565.     not all BIOSes correctly return the carry flag, making this call
  4566.       unreliable unless one first checks whether it is supported through
  4567.       a mechanism other than calling the function and testing CF
  4568. SeeAlso: AH=87h,AH=8Ah"Phoenix",AH=C7h,AX=DA88h,AX=E801h,AX=E820h
  4569. --------b-1588------------------------------------
  4570. INT 15 - HUNTER 16 - GET POWER UP KEYS
  4571.     AH = 88h
  4572. Return: AH = 00h
  4573.     BX = column
  4574.     CL = row
  4575. SeeAlso: AH=71h
  4576. --------B-1589-------------------------------
  4577. INT 15 - SYSTEM - SWITCH TO PROTECTED MODE
  4578.     AH = 89h
  4579.     BL = interrupt number of IRQ0 (IRQ1-7 use next 7 interrupts)
  4580.     BH = interrupt number of IRQ8 (IRQ9-F use next 7 interrupts)
  4581.     ES:SI -> GDT for protected mode (see #0419)
  4582. Return: CF set on error
  4583.        AH = FFh  error enabling address line 20
  4584.     CF clear if successful
  4585.        AH = 00h
  4586.        in protected mode at specified address
  4587.        BP may be destroyed; all segment registers change
  4588. Notes:    BL and BH must be multiples of 8
  4589.     the protected-mode CS must reference the same memory as the CS this
  4590.       function is called from because execution continues with the address
  4591.       following the interrupt call
  4592. SeeAlso: AH=87h,AH=88h,INT 67/AX=DE0Ch
  4593.  
  4594. Format of BIOS switch-to-protected-mode Global Descriptor Table:
  4595. Offset    Size    Description    (Table 0419)
  4596.  00h  8 BYTEs    null descriptor (initialize to zeros)
  4597.  08h  8 BYTEs    GDT descriptor (see #0420)
  4598.  10h  8 BYTEs    IDT descriptor
  4599.  18h  8 BYTEs    DS descriptor
  4600.  20h  8 BYTEs    ES
  4601.  28h  8 BYTEs    SS
  4602.  30h  8 BYTEs    CS
  4603.  38h  8 BYTEs    uninitialized, used to build descriptor for BIOS CS
  4604.  
  4605. Format of segment descriptor table entry:
  4606. Offset    Size    Description    (Table 0420)
  4607.  00h    WORD    segment limit, low word
  4608.  02h  3 BYTEs    segment base address, low 24 bits
  4609.  05h    BYTE    access mode (see #0421)
  4610.  06h    BYTE    386+ extended access mode (see #0422)
  4611.  07h    BYTE    386+ segment base address, high 8 bits
  4612. SeeAlso: #0419,INT 2C/AX=0002h,INT 31/AX=0009h
  4613.  
  4614. Bitfields for segment descriptor table access mode field:
  4615. Bit(s)    Description    (Table 0421)
  4616.  3-0    segment type
  4617.  4    descriptor type (1 = application, 0 = system)
  4618.  6-5    descriptor privilege level
  4619.  7    segment is present in RAM
  4620. SeeAlso: #0420,#0422
  4621.  
  4622. Bitfields for 386+ segment descriptor table extended access mode field:
  4623. Bit(s)    Description    (Table 0422)
  4624.  3-0    high 4 bits of segment limit
  4625.  4    available
  4626.  5    reserved (0)
  4627.  6    default operation size (1 = 32 bits, 0 = 16 bits)
  4628.  7    granularity (1 = 4K, 0 = byte)
  4629. SeeAlso: #0420,#0421,#2212
  4630. --------b-158900----------------------------------
  4631. INT 15 - HUNTER 16 - GET POWER MODE
  4632.     AX = 8900h
  4633. Return: AH = 00h
  4634.     BL = current power mode
  4635.         00h Standard Power Mode (SPM)
  4636.         01h Advanced Power Mode (APM)
  4637. SeeAlso: AX=8901h
  4638. --------b-158901----------------------------------
  4639. INT 15 - HUNTER 16 - SET POWER MODE
  4640.     AX = 8901h
  4641.     BL = new mode
  4642.         00h Standard Power Mode (SPM)
  4643.         01h Advanced Power Mode (APM)
  4644. Return: AH = 00h
  4645. SeeAlso: AX=8900h
  4646. --------b-158A------------------------------------
  4647. INT 15 - HUNTER 16 - CONTROL POWER INPUT (SPM)
  4648.     AH = 8Ah
  4649.     AL = new state of Power Input (00h disabled, nonzero enabled)
  4650.     SI = 1234h
  4651.     DI = 5678h
  4652. Return: AH = status
  4653.         00h success
  4654.         FFh failure
  4655. Desc:    Enable or disable Power Input. When Power Input is disabled the AC
  4656.       adapter will neither charge the batteries nor supply power to the
  4657.       Hunter 16. Disable Power Input if using Alkaline batteries.
  4658. --------b-158A-------------------------------
  4659. INT 15 - Phoenix BIOS v4.0 - GET BIG MEMORY SIZE
  4660.     AH = 8Ah
  4661. Return: DX:AX = extended memory size in K
  4662. SeeAlso: AH=88h,AX=E801h,AX=E820h
  4663. --------b-158B------------------------------------
  4664. INT 15 - HUNTER 16 - GET/SET CHARGER TEMPERATURE OVERRIDE
  4665.     AH = 8Bh
  4666.     AL = function
  4667.         00h get
  4668.         Return:    BH = Maximum charging temperature
  4669.                 Temp = -20 + (n * 0.63) degrees Centigrade
  4670.             BL = Minimum charging temperature
  4671.         else set
  4672.         BH = maximum charging temperature (as above)
  4673.         BL = minimum charging temperature (as above)
  4674. Return: AH = status
  4675.         00h success
  4676.         FFh failure
  4677. Desc:    get/set the temperature interval within which the charger should
  4678.       operate
  4679. --------b-158C------------------------------------
  4680. INT 15 - HUNTER 16 - GET/SET POWER SAVE ENTRY FLAG
  4681.     AH = 8Ch
  4682.     AL = function
  4683.         00h get
  4684.         Return: BX = which operations disable power save (see #0423)
  4685.         else set
  4686.         BX = which operations should disable power save (see #0423)
  4687. SeeAlso: AH=8Dh
  4688.  
  4689. Bitfields for HUNTER 16 operations disabling power save:
  4690. Bit(s)    Description    (Table 0423)
  4691.  0    INT 10h prevents power save
  4692.  1    INT 13h prevents power save
  4693.  2    INT 14h prevents power save
  4694.  3    INT 15h prevents power save
  4695.  4    INT 1Ah prevents power save
  4696.  5    INT 21h prevents power save
  4697.  6    direct write to video RAM prevents power save
  4698.  7    access to 8250 UART prevents power save
  4699.  8    access to 8253 (Sound) prevents power save
  4700. --------b-158D------------------------------------
  4701. INT 15 - HUNTER 16 - GET/SET BOOST CHARGE (SPM)
  4702.     AH = 8Dh
  4703.     AL = function
  4704.         00h get
  4705.         Return: AL = Fast Charge state (00h prevented, else allowed)
  4706.         nonzero set
  4707.         BH = Fast Charge state (00h prevent, nonzero allow)
  4708. Return: AH = status
  4709.         00h success
  4710.         FFh failure
  4711. Desc:    control whether Fast Charging (200ma rather than 70ma) is allowed
  4712. SeeAlso: AH=8Ch
  4713. --------B-1590-------------------------------
  4714. INT 15 - OS HOOK - DEVICE BUSY (AT,PS)
  4715.     AH = 90h
  4716.     AL = device type (see #0424)
  4717.     ES:BX -> request block for type codes 80h through BFh
  4718.     CF clear
  4719. Return: CF set if wait time satisfied
  4720.     CF clear if driver must perform wait
  4721.         AH = 00h
  4722. Notes:    type codes are allocated as follows:
  4723.       00-7F non-reentrant devices; OS must arbitrate access
  4724.       80-BF reentrant devices; ES:BX points to a unique control block
  4725.       C0-FF wait-only calls, no complementary INT 15/AH=91h call
  4726.     floppy and hard disk BIOS code uses this call to implement a timeout;
  4727.       for device types 00h and 01h, a return of CF set means that the
  4728.       timeout expired before the disk responded.
  4729.     this function should be hooked by a multitasker to allow other tasks
  4730.       to execute while the BIOS is waiting for I/O completion; the default
  4731.       handler merely returns with AH=00h and CF clear
  4732. SeeAlso: AH=91h,INT 13/AH=00h,INT 17/AH=00h,INT 1A/AH=83h
  4733.  
  4734. (Table 0424)
  4735. Values for device type:
  4736.  00h    disk
  4737.  01h    diskette
  4738.  02h    keyboard
  4739.  03h    PS/2 pointing device
  4740.  21h    waiting for keyboard input (Phoenix BIOS)
  4741.  80h    network
  4742.  FBh    digital sound (Tandy)
  4743.  FCh    disk reset (PS)
  4744.  FDh    diskette motor start
  4745.  FEh    printer
  4746. --------B-1591-------------------------------
  4747. INT 15 - OS HOOK - DEVICE POST (AT,PS)
  4748.     AH = 91h
  4749.     AL = device type (see #0424)
  4750.     ES:BX -> request block for type codes 80h through BFh
  4751.     CF clear
  4752. Return: AH = 00h
  4753. Note:    this function should be hooked by a multitasker to allow other tasks
  4754.       to execute while the BIOS is waiting for I/O completion; the default
  4755.       handler merely returns with AH=00h and CF clear
  4756. SeeAlso: AH=90h
  4757. --------B-1592-------------------------------
  4758. INT 15 - IBM SurePath BIOS - Officially "Private" Function
  4759.     AH = 92h
  4760. SeeAlso: AH=07h"IBM",AH=3Eh"IBM"
  4761. --------B-15A0-------------------------------
  4762. INT 15 - IBM SurePath BIOS - ACCESS LOADABLE-ABIOS SIGNATURE
  4763.     AH = A0h
  4764.     AL = function
  4765.         00h get loadable-ABIOS signature
  4766.         Return: BL = signature value
  4767.                 00h loadable-ABIOS prompting not required
  4768.                 A1h loadable-ABIOS prompting is required
  4769.         01h write loadable-ABIOS signature
  4770.         BL = new signature value
  4771.             00h loadable-ABIOS prompting not required
  4772.             A1h loadable-ABIOS prompting is required
  4773. Return: CF clear if successful
  4774.     CF set on error
  4775.     AH = status
  4776.         00h successful
  4777.         01h invalid subfunction
  4778.         02h unable to read/write signature
  4779.         86h function not supported
  4780. Note:    IBM classifies this function as optional
  4781. SeeAlso: AH=08h"IBM"
  4782. --------x-15A100-----------------------------
  4783. INT 15 U - AMI PCI BIOS - SET ??? FLAG
  4784.     AX = A100h
  4785. Return: AX = 0000h
  4786.     CF clear
  4787.     BX,CX,DI may be destroyed
  4788. Desc:    sets bit 7 of CMOS RAM location 37h and updates the CMOS checksum in
  4789.       locations 3Eh and 3Fh
  4790. Notes:    in the examined version of the BIOS, nonzero values in AL cause it to
  4791.       drop through to checking the next possible value of AH, i.e. only
  4792.       subfunction 00h is supported
  4793.     also supported by Dell XPS P90 and IBM PS/PV 6384, which also use
  4794.       AMI BIOSes
  4795. --------B-15AB-------------------------------
  4796. INT 15 - IBM SurePath BIOS - Officially "Private" Function
  4797.     AH = ABh
  4798. SeeAlso: AH=07h"IBM",AH=3Eh"IBM"
  4799. ----------15B001CX5354-----------------------
  4800. INT 15 - Stac ??? - INSTALLATION CHECK
  4801.     AX = B001h
  4802.     CX = 5354h ('ST')
  4803.     DX = 4143h ('AC')
  4804. Return: AX = 4F4Bh ('OK') if installed
  4805. Note:    this function is called by Novell DOS 7 NWCACHE v1.01
  4806. --------n-15BA10-----------------------------
  4807. INT 15 - HP OmniShare - Pen Driver - REPORT PEN CONTROL AREA EVENT
  4808.     AX = BA10h
  4809.     BL = event
  4810.        00h the pen left control areas
  4811.        01h the pen entered the Brightness- area
  4812.        02h the pen entered the Brightness+ area
  4813.        03h the pen entered the Contrast- area
  4814.        04h the pen entered the Contrast+ area
  4815. Return: CF clear if successfully processed
  4816.     CF set on error (function not supported, ie. not an OmniShare BIOS)
  4817. Note:    The pen driver is responsible for detecting when the pen enters and
  4818.       leaves control areas of the OmniShare tablet, and notifying the BIOS.
  4819.     The BIOS manages the events, including the autorepetition, and sets
  4820.       the status LEDs.
  4821. SeeAlso: AX=BA20h,AX=BA13h
  4822. --------n-15BA11-----------------------------
  4823. INT 15 - HP OmniShare - Pen Driver - SET THE COMMUNICATION LED STATE
  4824.     AX = BA11h
  4825.     BL = new LED state (00h steady, 01h flashing)
  4826. Return: CF clear if successful
  4827.     CF set on error
  4828. Note:    this function is for use by communication software to give visual
  4829.       feedback of active communications even if the display is in standby
  4830.       mode.
  4831. SeeAlso: AX=BA10h,AX=BA24h
  4832. --------n-15BA12-----------------------------
  4833. INT 15 - HP OmniShare - Pen Driver - STORE PEN BATTERY CHARGE
  4834.     AX = BA12h
  4835.     BL = new battery state (00h good, 01h low charge)
  4836. Return: CF set on error
  4837.     CF clear if successfully stored in CMOS
  4838. Note:    The last report will be displayed by the Power-On Self Test the next
  4839.       time the OmniShare boots.  This allows something meaningful to be
  4840.       reported even if the pen is not detected during the POST.
  4841. SeeAlso: AX=BA13h
  4842. --------n-15BA13-----------------------------
  4843. INT 15 - HP OmniShare - Pen Driver - GET PEN BATTERY CHARGE
  4844.     AX = BA13h
  4845. Return: CF clear if successful
  4846.         BL = pen battery state (00h good, 01h low charge)
  4847.     CF set on error
  4848. Note:    returns the last value set by AX=BA12h.
  4849. SeeAlso: AX=BA12h
  4850. --------p-15BA20-----------------------------
  4851. INT 15 - HP OmniShare - STANDBY.COM - INSTALLATION CHECK
  4852.     AX = BA20h
  4853. Return: CF clear if successful (installed)
  4854.     CF set on error (not installed)
  4855. Notes:    The display controller can enter a standby mode after a given timeout,
  4856.       to conserve power or (for the OmniShare) to increase the life of
  4857.       the backlight.
  4858.     A side effect of standby mode is that the communications LED turns on
  4859.       automatically when the display is in standby mode.  This is done in
  4860.       hardware, and is intended to show that the unit is still on.
  4861. SeeAlso: AX=BA10h,AX=BA20h,AX=BA22h,AX=BA24h,AX=BA26h
  4862. --------p-15BA21-----------------------------
  4863. INT 15 - HP OmniShare - STANDBY.COM - SET STANDBY DURATION
  4864.     AX = BA21h
  4865.     BL = new timeout before standby mode in minutes (01h-0Fh)
  4866.         00h to disable automatic switch to standby mode
  4867. Return: CF clear if successful
  4868.     CF set on error (function not supported)
  4869. Note:    The actual timeout with a GD6205 controller is ((N*64)-32) seconds,
  4870.       instead of (N*60) seconds as documented.
  4871. SeeAlso: AX=BA20h,AX=BA22h
  4872. --------p-15BA22-----------------------------
  4873. INT 15 - HP OmniShare - STANDBY.COM - GET STANDBY DURATION
  4874.     AX = BA22h
  4875. Return: CF clear if successful
  4876.        BL = standy duration in minutes (01h-0Fh), or 00h if disabled
  4877.     CF set on error (function not supported)
  4878. Note:    The actual timeout with a GD6205 controller is ((N*64)-32) seconds,
  4879.       instead of (N*60) seconds as documented.
  4880. SeeAlso: AX=BA20h,AX=BA21h
  4881. --------p-15BA23-----------------------------
  4882. INT 15 - HP OmniShare - STANDBY.COM - TURN ON THE SCREEN IMMEDIATELY
  4883.     AX = BA23h
  4884. Return: CF clear if successful
  4885.     CF set on error
  4886. SeeAlso: AX=BA11h,AX=BA20h,AX=BA24h
  4887. --------p-15BA24-----------------------------
  4888. INT 15 - HP OmniShare - STANDBY.COM - TURN OFF THE SCREEN IMMEDIATELY
  4889.     AX = BA24h
  4890. Return: CF clear if successful
  4891.     CF set on error
  4892. Note:    This function is not implemented yet. Reserved for future versions
  4893.       of the OmniShare.
  4894. SeeAlso: AX=BA11h,AX=BA20h,AX=BA23h
  4895. --------p-15BA25-----------------------------
  4896. INT 15 - HP OmniShare - STANDBY.COM - PREPARE FOR UNINSTALL
  4897.     AX = BA25h
  4898. Return: CF clear if successful
  4899.         AX = 25BAh
  4900.         BX = PSP of STANDBY.COM resident portion
  4901.         DX:CX -> previous INT 15 handler
  4902.     CF set on error
  4903. Note:    This function is used internally by the STANDBY.COM /u option, and
  4904.       should not be used by application programs.
  4905. SeeAlso: AX=BA20h
  4906. --------p-15BA26-----------------------------
  4907. INT 15 - HP OmniShare - STANDBY.COM - IS THE DISPLAY IN STANDBY MODE?
  4908.     AX = BA26h
  4909. Return: CF clear if successful
  4910.         AL    = display state (00h active, 01h in standby mode)
  4911.     CF set on error (function not supported)
  4912. SeeAlso: AX=BA20h,AX=BA23h
  4913. --------p-15BA27-----------------------------
  4914. INT 15 - HP OmniShare - STANDBY.COM - RESERVED FUNCTIONS
  4915.     AX = BA27h to BA2Fh
  4916. Desc:    reserved for future use
  4917. --------b-15BC-------------------------------
  4918. INT 15 - Phoenix 386 BIOS - DETERMINE CPU SPEED FOR DELAY LOOPS
  4919.     AH = BCh
  4920. Return: CF clear
  4921.     (Phoenix 1.10 10a) BYTE 0040h:00B0h set to delay loop count
  4922.     (Dell 4xxDE BIOS A11) WORD 0040h:00ECh set to delay loop count
  4923. Note:    this function reads system timer channel 0 twice, then does
  4924.       calculations on the returned values to determine the delay loop
  4925.       counter needed by the BIOS for beeps and floppy timeouts
  4926. SeeAlso: AX=2305h
  4927. --------E-15BF00-----------------------------
  4928. INT 15 - Rational Systems DOS/16M - ???
  4929.     AX = BF00h
  4930.     ???
  4931. Return: ???
  4932. Note:    under DESQview/X 1.02 DVDOS4GX.DVR, this call is identical to AX=BF02h
  4933. SeeAlso: AX=BF02h
  4934. --------E-15BF01-----------------------------
  4935. INT 15 - Rational Systems DOS/16M - ???
  4936.     AX = BF01h
  4937.     ???
  4938. Return: ???
  4939. Notes:    under DESQview/X 1.02 DVDOS4GX.DVR, this call is identical to AX=BF02h
  4940.     called by DOS/4GW
  4941. SeeAlso: AX=BF00h,AX=BF02h
  4942. --------E-15BF02DX0000-----------------------
  4943. INT 15 - Rational Systems DOS/16M - INSTALLATION CHECK
  4944.     AX = BF02h
  4945.     DX = 0000h
  4946. Return: DX = nonzero if installed
  4947.         DX:SI -> XBRK structure (see #0425)
  4948. Note:    this function is also supported by DOS/4G
  4949. SeeAlso: AX=BF01h,AX=BFDCh,AX=BFDEh/BX=0000h
  4950. SeeAlso: INT 21/AH=FFh/DH=0Eh,INT 2F/AH=A1h,INT 2F/AX=F100h,INT 2F/AX=FBA1h
  4951.  
  4952. Format of DOS/16M XBRK structure:
  4953. Offset    Size    Description    (Table 0425)
  4954.  00h    DWORD    linear address of first available byte
  4955.  04h    DWORD    linear address of last available byte + 1 ???
  4956.  08h    DWORD    real-mode address of XBRK structure???
  4957.  0Ch    DWORD    ???
  4958.  10h  2 BYTEs    ???
  4959.  12h    WORD    segment of ???
  4960.  14h  8 BYTEs    ???
  4961.  1Ch 512 BYTEs    protected-mode IDT
  4962. 21Ch  N BYTEs    protected-mode GDT
  4963. --------E-15BF03-----------------------------
  4964. INT 15 - Rational Systems DOS/4GW - UNINSTALL???
  4965.     AX = BF03h
  4966.     BX = PSP segment of extender
  4967.     ???
  4968. Return: ???
  4969. Note:    if BX is not the PSP segment of the extender, it passes the call down
  4970.       the INT 15 chain; this allows nested instances of the extender
  4971. SeeAlso: AX=BF06h
  4972. --------E-15BF04-----------------------------
  4973. INT 15 - Rational Systems DOS/4GW - ???
  4974.     AX = BF04h
  4975.     BX = PSP segment of extender
  4976. Return: nothing???
  4977. Notes:    if BX is not the PSP segment of the extender, it passes the call down
  4978.       the INT 15 chain; this allows nested instances of the extender
  4979.     grabs INT 2Fh and installs handlers for INT 2F/AX=1605h-1607h
  4980. SeeAlso: INT 2F/AX=1607h/BX=22C0h
  4981. --------E-15BF05-----------------------------
  4982. INT 15 - Rational Systems DOS/4GW - INITIALIZE PROTECTED-MODE INTERFACE
  4983.     AX = BF05h
  4984.     BX = PSP segment of extender
  4985. Return: nothing???
  4986. Notes:    if BX is not the PSP segment of the extender, it passes the call down
  4987.       the INT 15 chain; this allows nested instances of the extender
  4988.     calls INT 67/AX=DE01h if ???
  4989. --------E-15BF06-----------------------------
  4990. INT 15 - Rational Systems DOS/4GW - ???
  4991.     AX = BF06h
  4992.     BX = PSP segment of extender
  4993.     ???
  4994. Return: ???
  4995. Note:    if BX is not the PSP segment of the extender, it passes the call down
  4996.       the INT 15 chain; this allows nested instances of the extender
  4997. SeeAlso: AX=BF03h
  4998. --------E-15BFDCDX0000-----------------------
  4999. INT 15 - Rational Systems DOS/4GW - INSTALLATION CHECK
  5000.     AX = BFDCh
  5001.     DX = 0000h
  5002.     SI = 0000h
  5003. Return: DX = nonzero if installed
  5004.         DX:SI -> XBRK structure (see #0425)
  5005. SeeAlso: AX=BF02h
  5006. --------E-15BFDEBX0000-----------------------
  5007. INT 15 - DESQview/X - DVDOS4GX.DVR - INSTALLATION CHECK
  5008.     AX = BFDEh
  5009.     BX = 0000h
  5010. Return: AX = ??? (0003h)
  5011.     BX = FFFFh
  5012. SeeAlso: AX=BF02h
  5013. --------E-15BFDEBX0001-----------------------
  5014. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET PROCESS MANAGER NAME
  5015.     AX = BFDEh
  5016.     BX = 0001h
  5017. Return: BX = 0000h (success)
  5018.     CX:DX -> name of process manager executable
  5019. SeeAlso: AX=BFDEh/BX=0000h
  5020. --------E-15BFDEBX0002-----------------------
  5021. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - SET ???
  5022.     AX = BFDEh
  5023.     BX = 0002h
  5024.     CX:DX -> ???
  5025. Return: BX = 0000h (success)
  5026. SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=0003h
  5027. --------E-15BFDEBX0003-----------------------
  5028. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ???
  5029.     AX = BFDEh
  5030.     BX = 0003h
  5031. Return: BX = 0000h (success)
  5032.     CX:DX -> ???
  5033. SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=0002h
  5034. --------E-15BFDEBX0004-----------------------
  5035. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ???
  5036.     AX = BFDEh
  5037.     BX = 0004h
  5038.     CL = ???
  5039. Return: BX = 0000h (success)
  5040.     CX:DX -> XBRK structure (see #0425)
  5041. SeeAlso: AX=BFDEh/BX=0000h
  5042. --------E-15BFDEBX0005-----------------------
  5043. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ???
  5044.     AX = BFDEh
  5045.     BX = 0005h
  5046.     CX = new value for ???
  5047. Return: BX = 0000h (success)
  5048.     AX = old value of ???
  5049.     DS:SI -> ??? (if AX nonzero on return)
  5050.     ES:DI -> ??? (if AX zero on return)
  5051. Note:    called by DOS4GW.EXE
  5052. SeeAlso: AX=BFDEh/BX=0000h
  5053. --------E-15BFDEBX0006-----------------------
  5054. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ???
  5055.     AX = BFDEh
  5056.     BX = 0006h
  5057. Return: BX = 0000h (success)
  5058.     AH = interrupt number??? (BEh)
  5059.     CX:DX = ???
  5060. SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=0007h,INT BE"DESQview"
  5061. --------E-15BFDEBX0007-----------------------
  5062. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - SET ???
  5063.     AX = BFDEh
  5064.     BX = 0007h
  5065.     CX:DX = ???
  5066. Return: BX = 0000h (success)
  5067. SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=0006h
  5068. --------E-15BFDEBX0008-----------------------
  5069. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ???
  5070.     AX = BFDEh
  5071.     BX = 0008h
  5072.     CX = segment of ???
  5073.     DS = ???
  5074. Return: BX = status
  5075.         0000h successful
  5076.         AL = ??? (80h or C0h)
  5077.         DX = ??? (0603h) if AL=C0h
  5078.         0001h failed
  5079.         AX = 0000h
  5080. Note:    called by DOS4GW.EXE
  5081. SeeAlso: AX=BFDEh/BX=0000h
  5082. --------E-15BFDEBX0009-----------------------
  5083. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET PROTECTED MODE PROGRAM LOADER
  5084.     AX = BFDEh
  5085.     BX = 0009h
  5086. Return: BX = 0000h (success)
  5087.     CX:DX -> full pathname to LOAD32.EXP
  5088. SeeAlso: AX=BFDEh/BX=0000h
  5089. --------E-15BFDEBX000A-----------------------
  5090. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - DECREMENT ???
  5091.     AX = BFDEh
  5092.     BX = 000Ah
  5093. Return: BX = 0000h (success)
  5094.     AX = new value of ??? counter
  5095. Notes:    also resets a variety of values if the counter goes negative
  5096.     called by DOS4GW.EXE
  5097. SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=000Bh
  5098. --------E-15BFDEBX000B-----------------------
  5099. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - INCREMENT ???
  5100.     AX = BFDEh
  5101.     BX = 000Bh
  5102. Return: AX = new value of ??? counter
  5103. Note:    called by DOS4GW.EXE
  5104. SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=000Ah
  5105. --------E-15BFDEBX000C-----------------------
  5106. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ???
  5107.     AX = BFDEh
  5108.     BX = 000Ch
  5109.     CL = ???
  5110.         00h
  5111.         nonzero
  5112. Return: ???
  5113. SeeAlso: AX=BFDEh/BX=0000h
  5114. --------E-15BFDEBX000D-----------------------
  5115. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ???
  5116.     AX = BFDEh
  5117.     BX = 000Dh
  5118.     ???
  5119. Return: ???
  5120. SeeAlso: AX=BFDEh/BX=0000h
  5121. --------E-15BFDEBX000E-----------------------
  5122. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ???
  5123.     AX = BFDEh
  5124.     BX = 000Eh
  5125.     DX:CX -> ???
  5126. Return: AX = segment of handle for calling task
  5127.     BX = ??? (probably destroyed)
  5128.     DX:CX -> ???
  5129. SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=000Fh,AX=BFDEh/BX=0013h
  5130. --------E-15BFDEBX000F-----------------------
  5131. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ???
  5132.     AX = BFDEh
  5133.     BX = 000Fh
  5134. Return: AX = segment of handle for calling task
  5135.     BX = ??? (probably destroyed)
  5136.     DX:CX -> ???
  5137. Note:    identical to AX=BFDEh/BX=000Eh with CX:DX = 0000h:0000h
  5138. SeeAlso: AX=BFDEh/BX=000Eh,AX=BFDEh/BX=0010h
  5139. --------E-15BFDEBX0010-----------------------
  5140. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET TASK HANDLE
  5141.     AX = BFDEh
  5142.     BX = 0010h
  5143. Return: AX = segment of caller's task handle
  5144.     BX destroyed
  5145. SeeAlso: AX=BFDEh/BX=000Fh
  5146. --------E-15BFDEBX0011-----------------------
  5147. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ???
  5148.     AX = BFDEh
  5149.     BX = 0011h
  5150. Return: CX = code segment of DVDOS4GX.DVR
  5151.     BX = ??? (0004h)
  5152. SeeAlso: AX=BFDEh/BX=0000h
  5153. --------E-15BFDEBX0012-----------------------
  5154. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ???
  5155.     AX = BFDEh
  5156.     BX = 0012h
  5157. Return: DX = code segment of DVDOS4GX.DVR
  5158.     BX = ??? (012Ch)
  5159.     CX = ??? (0006h)
  5160. SeeAlso: AX=BFDEh/BX=0000h
  5161. --------E-15BFDEBX0013-----------------------
  5162. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ???
  5163.     AX = BFDEh
  5164.     BX = 0013h
  5165. Return: DX:CX -> ???
  5166. SeeAlso: AX=BFDEh/BX=000Eh
  5167. --------E-15BFDEBX0014-----------------------
  5168. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - LOCK ??? MAILBOX
  5169.     AX = BFDEh
  5170.     BX = 0014h
  5171.     CX = index of ??? mailbox
  5172.         (0000h-0004h valid, but no range checking done)
  5173. Return: AX,BX destroyed
  5174. SeeAlso: AX=BFDEh/BX=0015h,AX=BFDEh/BX=0017h
  5175. --------E-15BFDEBX0015-----------------------
  5176. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - UNLOCK ??? MAILBOX
  5177.     AX = BFDEh
  5178.     BX = 0015h
  5179.     CX = index of ??? mailbox
  5180.         (0000h-0004h valid, but no range checking done)
  5181. Return: AX,BX destroyed
  5182. SeeAlso: AX=BFDEh/BX=0014h,AX=BFDEh/BX=0016h
  5183. --------E-15BFDEBX0016-----------------------
  5184. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - CHECK IF ??? MAILBOX OWNED
  5185.     AX = BFDEh
  5186.     BX = 0016h
  5187.     CX = index of ??? mailbox
  5188.         (0000h-0004h valid, but no range checking done)
  5189. Return: AX = status
  5190.         0000h no one owns mailbox
  5191.         0001h mailbox has an owner
  5192.     BX destroyed
  5193. SeeAlso: AX=BFDEh/BX=0015h,AX=BFDEh/BX=0017h
  5194. --------E-15BFDEBX0017-----------------------
  5195. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ??? MAILBOX OWNER
  5196.     AX = BFDEh
  5197.     BX = 0017h
  5198.     CX = index of ??? mailbox
  5199.         (0000h-0004h valid, but no range checking done)
  5200. Return: AX = segment of mailbox owner's handle
  5201.     BX = segment of caller's task handle
  5202. SeeAlso: AX=BFDEh/BX=0015h,AX=BFDEh/BX=0016h
  5203. --------E-15BFDEBXFFFD-----------------------
  5204. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ???
  5205.     AX = BFDEh
  5206.     BX = FFFDh
  5207. Return: CX:DX = ???
  5208. SeeAlso: AX=BFDEh/BX=FFFEh
  5209. --------E-15BFDEBXFFFE-----------------------
  5210. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - SET ???
  5211.     AX = BFDEh
  5212.     BX = FFFEh
  5213.     CX:DX = ???
  5214. SeeAlso: AX=BFDEh/BX=FFFDh
  5215. --------E-15BFDEBXFFFF-----------------------
  5216. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - NOP
  5217.     AX = BFDEh
  5218.     BX = FFFFh
  5219. SeeAlso: AX=BFDEh/BX=0000h
  5220. --------B-15C0-------------------------------
  5221. INT 15 - SYSTEM - GET CONFIGURATION (XT after 1/10/86,AT mdl 3x9,CONV,XT286,PS)
  5222.     AH = C0h
  5223. Return: CF set if BIOS doesn't support call
  5224.     CF clear on success
  5225.         ES:BX -> ROM table (see #0426)
  5226.     AH = status
  5227.         00h successful
  5228.         86h unsupported function
  5229. Notes:    the 1/10/86 XT BIOS returns an incorrect value for the feature byte
  5230.     the configuration table is at F000h:E6F5h in 100% compatible BIOSes
  5231.     Dell machines contain the signature "DELL" or "Dell" at absolute FE076h
  5232.       and a model byte at absolute address FE845h (see #0433)
  5233.     Hewlett-Packard machines contain the signature "HP" at F000h:00F8h and
  5234.       a product identifier at F000h:00FAh (see #0436)
  5235.     Compaq machines can be identified by the signature string "COMPAQ" at
  5236.       F000h:FFEAh, and is preceded by additional information (see #0434)
  5237.     Tandy 1000 machines contain 21h in the byte at F000h:C000h and FFh in
  5238.       the byte at FFFFh:000Eh; Tandy 1000SL/TL machines only provide the
  5239.       first three data bytes (model/submodel/revision) in the returned
  5240.       table
  5241.     Toshiba laptops contain the signature "TOSHIBA" at FE010h as part of
  5242.       a laptop information record at F000h:E000h (see #0437)
  5243.     some AST machines contain the string "COPYRIGHT AST RESEARCH" one byte
  5244.       past the end of the configuration table
  5245.     the Phoenix 386 BIOS contains a second version and date string
  5246.       (presumably the last modification for that OEM version) beginning at
  5247.       F000h:FFD8h, with each byte doubled (so that both ROM chips contain
  5248.       the complete information)
  5249. SeeAlso: AH=C7h,AH=C9h,AX=D100h,AX=D103h
  5250.  
  5251. Format of ROM configuration table:
  5252. Offset    Size    Description    (Table 0426)
  5253.  00h    WORD    number of bytes following
  5254.  02h    BYTE    model (see #0432)
  5255.  03h    BYTE    submodel (see #0432)
  5256.  04h    BYTE    BIOS revision: 0 for first release, 1 for 2nd, etc.
  5257.  05h    BYTE    feature byte 1 (see #0427)
  5258.  06h    BYTE    feature byte 2 (see #0428)
  5259.  07h    BYTE    feature byte 3 (see #0429)
  5260.  08h    BYTE    feature byte 4 (see #0430)
  5261.  09h    BYTE    feature byte 5 (see #0431)
  5262.         ??? (08h) (Phoenix 386 v1.10)
  5263.         ??? (0Fh) (Phoenix 486 v1.03 PCI)
  5264. ---AWARD BIOS---
  5265.  0Ah  N BYTEs    AWARD copyright notice
  5266. ---Phoenix BIOS---
  5267.  0Ah    BYTE    ??? (00h)
  5268.  0Bh    BYTE    major version
  5269.  0Ch    BYTE    minor version (BCD)
  5270.  0Dh  4 BYTEs    ASCIZ string "PTL" (Phoenix Technologies Ltd)
  5271. ---Quadram Quad386---
  5272.  0Ah 17 BYTEs    ASCII signature string "Quadram Quad386XT"
  5273.  
  5274. Bitfields for feature byte 1:
  5275. Bit(s)    Description    (Table 0427)
  5276.  7    DMA channel 3 used by hard disk BIOS
  5277.  6    2nd 8259 installed
  5278.  5    Real-Time Clock installed
  5279.  4    INT 15/AH=4Fh called upon INT 09h
  5280.  3    wait for external event (INT 15/AH=41h) supported
  5281.  2    extended BIOS area allocated (usually at top of RAM)
  5282.  1    bus is Micro Channel instead of ISA
  5283.  0    system has dual bus (Micro Channel + ISA)
  5284. SeeAlso: #0426,#0428
  5285.  
  5286. Bitfields for feature byte 2:
  5287. Bit(s)    Description    (Table 0428)
  5288.  7    32-bit DMA supported
  5289.  6    INT 16/AH=09h (keyboard functionality) supported (see #0502)
  5290.  5    INT 15/AH=C6h (get POS data) supported
  5291.  4    INT 15/AH=C7h (return memory map info) supported
  5292.  3    INT 15/AH=C8h (en/disable CPU functions) supported
  5293.  2    non-8042 keyboard controller
  5294.  1    data streaming supported
  5295.  0    reserved
  5296. SeeAlso: #0426,#0429,AH=C6h,AH=C7h,AH=C8h,INT 16/AH=09h
  5297.  
  5298. Bitfields for feature byte 3:
  5299. Bit(s)    Description    (Table 0429)
  5300.  7    not used
  5301.  6-5    reserved
  5302.  4    POST supports ROM-to-RAM enable/disable
  5303.  3    SCSI subsystem supported on system board
  5304.  2    information panel installed
  5305.  1    IML (Initial Machine Load) system (BIOS loaded from disk)
  5306.  0    SCSI supported in IML
  5307. SeeAlso: #0426,#0428,#0429
  5308.  
  5309. Bitfields for feature byte 4:
  5310. Bit(s)    Description    (Table 0430)
  5311.  7    IBM "private" (set on N51SX, CL57SX)
  5312.  6    system has EEPROM
  5313.  5-3    ABIOS presence
  5314.     001 not supported
  5315.     010 supported in ROM
  5316.     011 supported in RAM (must be loaded)
  5317.  2    "private"
  5318.  1    system supports memory split at/above 16M
  5319.  0    POSTEXT directly supported by POST
  5320. SeeAlso: #0426,#0429,#0431
  5321.  
  5322. Bitfields for feature byte 5 (IBM):
  5323. Bit(s)    Description    (Table 0431)
  5324.  7-5    IBM "private"
  5325.  4-2    reserved
  5326.  1    system has enhanced mouse mode
  5327.  0    flash EPROM
  5328. SeeAlso: #0426,#0430
  5329.  
  5330. (Table 0432)
  5331. Values for model/submodel/revision:
  5332. Model  Submdl  Rev    BIOS date    System
  5333.  FFh    *    *    04/24/81    PC (original)
  5334.  FFh    *    *    10/19/81    PC (some bugfixes)
  5335.  FFh    *    *    10/27/82    PC (HD, 640K, EGA support)
  5336.  FFh    00h    rev      ???        Tandy 1000SL
  5337.  FFh    01h    rev      ???        Tandy 1000TL
  5338.  FFh    46h    ***      ???        Olivetti M15
  5339.  FEh    *    *    08/16/82    PC XT
  5340.  FEh    *    *    11/08/82    PC XT and Portable
  5341.  FEh    *    *    ../..x..    Toshiba laptops up to ~1987
  5342.                     ("x"=product ID) (see #0438)
  5343.  FEh    43h    ***      ???        Olivetti M240
  5344.  FEh    A6h    ???      ???        Quadram Quad386
  5345.  FDh    *    *    06/01/83    PCjr
  5346.  FCh    *    *    01/10/84    AT models 068,099 6 MHz 20MB
  5347.  FCh    *    *    02/25/93    Linux DOSEMU (all versions)
  5348.  FCh    00h    00h      ???        PC3270/AT
  5349.  FCh    00h    01h    06/10/85    AT model  239      6 MHz 30MB
  5350.  FCh    00h    > 01h      ???        7531/2 Industrial AT
  5351.  FCh    01h    00h    11/15/85    AT models 319,339 8 MHz, Enh Keyb, 3.5"
  5352.  FCh    01h    00h    09/17/87    Tandy 3000
  5353.  FCh    01h    00h    ../..x..    Toshiba laptops since ~1988
  5354.                     ("x"=product ID) (see #0438)
  5355.  FCh    01h    00h    03/08/93    Compaq DESKPRO/i
  5356.  FCh    01h    00h     various    Compaq DESKPRO, SystemPro, ProSignia
  5357.  FCh    01h    00h    07/20/93    Zenith Z-Lite 425L
  5358.  FCh    01h    00h    04/09/90    AMI BIOS
  5359.  FCh    01h    20h    06/10/92    AST
  5360.  FCh    01h    30h      ???        Tandy 3000NL
  5361.  FCh    01h    ???      ???        Compaq 286/386
  5362.  FCh    02h    00h    04/21/86    PC XT-286
  5363.  FCh    02h    00h     various    Compaq LTE Lite
  5364.  FCh    02h    00h    08/05/93    Compaq Contura 486/486c/486cx
  5365.  FCh    02h    00h    08/11/88    SoftWindows 1.0.1 (Power Macintosh)
  5366.  FCh    04h    00h    02/13/87     ** PS/2 Model 50 (10 MHz/1 ws 286)
  5367.  FCh    04h    01h    05/09/87    PS/2 Model 50 (10 Mhz 286, LW-type 32)
  5368.  FCh    04h    02h      ???        PS/2 Model 50
  5369.  FCh    04h    02h    01/28/88    PS/2 Model 50Z (10 Mhz 286, LW-type 33)
  5370.  FCh    04h    03h    04/18/88    PS/2 Model 50Z (10 MHz/0 ws 286)
  5371.  FCh    04h    04h      ???        PS/2 Model 50Z
  5372.  FCh    05h    00h    02/13/87     ** PS/2 Model 60 (10 MHz 286)
  5373.  FCh    06h    00h      ???        IBM 7552-140 "Gearbox"
  5374.  FCh    06h    01h      ???        IBM 7552-540 "Gearbox"
  5375.  FCh    08h    ***      ???        Epson, unknown model
  5376.  FCh    08h    00h      ???        PS/2 Model 25/286
  5377.  FCh    09h    00h      ???        PS/2 Model 25 (10 MHz 286)
  5378.  FCh    09h    00h    08/25/88    PS/2 Model 30 286 (10 Mhz, LW-type 37)
  5379.  FCh    09h    02h    06/28/89    PS/2 Model 30-286
  5380.  FCh    09h    02h    06/28/89    PS/2 Model 25 286 (10 Mhz, LW-type 37)
  5381.  FCh    0Bh    00h    12/01/89    PS/1 (LW-Type 44)
  5382.  FCh    0Bh    00h    02/16/90    PS/1 Model 2011 (10 MHz 286)
  5383.  FCh    20h    00h    02/18/93    Compaq ProLinea
  5384.  FCh    30h    ***      ???        Epson, unknown model
  5385.  FCh    31h    ***      ???        Epson, unknown model
  5386.  FCh    33h    ***      ???        Epson, unknown model
  5387.  FCh    42h    ***      ???        Olivetti M280
  5388.  FCh    45h    ***      ???        Olivetti M380 (XP 1, XP3, XP 5)
  5389.  FCh    48h    ***      ???        Olivetti M290
  5390.  FCh    4Fh    ***      ???        Olivetti M250
  5391.  FCh    50h    ***      ???        Olivetti M380 (XP 7)
  5392.  FCh    51h    ***      ???        Olivetti PCS286
  5393.  FCh    52h    ***      ???        Olivetti M300
  5394.  FCh    81h    00h    01/15/88    Phoenix 386 BIOS v1.10 10a
  5395.  FCh    81h    01h      ???        "OEM machine"
  5396.  FCh    82h    01h      ???        "OEM machine"
  5397.  FCh    94h    00h      ???        Zenith 386
  5398.  FBh    00h    01h    01/10/86    PC XT-089, Enh Keyb, 3.5" support
  5399.  FBh    00h    01h    05/13/94    HP 200LX 2MB BIOS 1.01 A D german
  5400.  FBh    00h    02h    05/09/86    PC XT
  5401.  FBh    00h    04h    08/19/93    HP 100LX 1MB BIOS 1.04 A
  5402.  FBh    4Ch    ***      ???        Olivetti M200
  5403.  FAh    00h    00h    09/02/86    PS/2 Model 30 (8 MHz 8086)
  5404.  FAh    00h    01h    12/12/86    PS/2 Model 30
  5405.  FAh    00h    02h    02/05/87    PS/2 Model 30
  5406.  FAh    01h    00h    06/26/87    PS/2 Model 25/25L (8 MHz 8086)
  5407.  FAh    30h    00h      ???        IBM Restaurant Terminal
  5408.  FAh    4Eh    ***      ???        Olivetti M111
  5409.  FAh    FEh    00h      ???        IBM PCradio 9075
  5410.  F9h    00h    00h    09/13/85    PC Convertible
  5411.  F9h    FFh    00h      ???        PC Convertible
  5412.  F8h    00h    00h    03/30/87     ** PS/2 Model 80 (16MHz 386)
  5413.  F8h    00h    00h      ???        PS/2 Model 75 486 (33Mhz 486)
  5414.  F8h    01h    00h    10/07/87    PS/2 Model 80 (20MHz 386)
  5415.  F8h    02h    00h      ???        PS/2 Model 55-5571
  5416.  F8h    04h    00h    01/29/88    PS/2 Model 70 (20 Mhz 386DX,LW-type 33)
  5417.  F8h    04h    02h    04/11/88    PS/2 Model 70 20MHz, type 2 system brd
  5418.  F8h    04h    03h    03/17/89    PS/2 Model 70 20MHz, type 2 system brd
  5419.  F8h    05h    00h      ???        IBM PC 7568
  5420.  F8h    06h    00h      ???        PS/2 Model 55-5571
  5421.  F8h    07h    00h      ???        IBM PC 7561/2
  5422.  F8h    07h    01h      ???        PS/2 Model 55-5551
  5423.  F8h    07h    02h      ???        IBM PC 7561/2
  5424.  F8h    07h    03h      ???        PS/2 Model 55-5551
  5425.  F8h    09h    00h    01/29/88    PS/2 Model 70 16MHz 386DX, type 1 sysbd
  5426.  F8h    09h    02h    04/11/88    PS/2 Model 70 some models
  5427.  F8h    09h    03h    03/17/89    PS/2 Model 70 some models
  5428.  F8h    09h    04h    12/15/89    PS/2 Model 70 (16 Mhz 386, LW-type 33)
  5429.  F8h    0Bh    00h    01/18/89    PS/2 Model P70 (8573-121) typ 2 sys brd
  5430.  F8h    0Bh    02h    12/16/89    PS/2 Model P70 ??
  5431.  F8h    0Ch    00h    11/02/88    PS/2 Model 55SX (16 MHz 386SX)
  5432.  F8h    0Dh    00h      ???        PS/2 Model 70 25MHz, type 3 system brd
  5433.  F8h    0Dh    00h    06/08/88    PS/2 Model 70 386 25MHz, type 3 sys brd
  5434.  F8h    0Dh    01h    02/20/89    PS/2 Model 70 386 25MHz, type 3 sys brd
  5435.  F8h    0Dh    ???    12/01/89    PS/2 Model 70 486 25Mhz, type 3 sys brd
  5436.  F8h    0Eh    00h      ???        PS/1 486SX
  5437.  F8h    0Fh    00h      ???        PS/1 486DX
  5438.  F8h    10h    00h      ???        PS/2 Model 55-5551
  5439.  F8h    11h    00h    10/01/90    PS/2 Model 90 XP (25 MHz 486)
  5440.  F8h    12h    00h      ???        PS/2 Model 95 XP
  5441.  F8h    13h    00h    10/01/90    PS/2 Model 90 XP (33 MHz 486)
  5442.  F8h    14h    00h    10/01/90    PS/2 Model 90-AK9 (25 MHz 486), 95 XP
  5443.  F8h    15h    00h      ???        PS/2 Model 90 XP
  5444.  F8h    16h    00h    10/01/90    PS/2 Model 90-AKD / 95XP486 (33MHz 486)
  5445.  F8h    17h    00h      ???        PS/2 Model 90 XP
  5446.  F8h    19h    05h      ???        PS/2 Model 35/35LS or 40 (20 MHz 386SX)
  5447.  F8h    19h    05h    03/15/91    PS/2 Model 35 SX / 40 SX (LW-type 37)
  5448.  F8h    19h    06h    04/04/91    PS/2 Model 35 SX / 40 SX (LW-type 37)
  5449.  F8h    1Ah    00h      ???        PS/2 Model 95 XP
  5450.  F8h    1Bh    00h    09/29/89    PS/2 Model 70 486 (25 Mhz 386DX)
  5451.  F8h    1Bh    00h    10/02/89    PS/2 Model 70-486 (25 MHz 486)
  5452.  F8h    1Ch    00h    02/08/90    PS/2 Model 65-121 / 65 SX (16MHz 386SX)
  5453.  F8h    1Eh    00h    02/08/90    PS/2 Model 55LS (16 MHz 386SX)
  5454.  F8h    23h    00h      ???        PS/2 Model L40 SX
  5455.  F8h    23h    01h      ???        PS/2 Model L40 SX (20 MHz 386SX)
  5456.  F8h    23h    02h    02/27/91    PS/2 Model L40 SX (20Mhz386SX,LW-typ37)
  5457.  F8h    25h    00h      ???        PS/2 Model 57 SLC
  5458.  F8h    25h    06h      ???        PS/2 Model M57 (20 MHz 386SLC)
  5459.  F8h    26h    00h      ???        PS/2 Model 57 SX
  5460.  F8h    26h    01h      ???        PS/2 Model 57 (20 MHz 386SX)
  5461.  F8h    26h    02h    07/03/91    PS/2 Model 57 SX (20Mhz 386SX, SCSI)
  5462.  F8h    28h    00h      ???        PS/2 Model 95 XP
  5463.  F8h    29h    00h      ???        PS/2 Model 90 XP
  5464.  F8h    2Ah    00h      ???        PS/2 Model 95 XP (50 MHz 486)
  5465.  F8h    2Bh    00h      ???        PS/2 Model 90 / 90XP486 (50 MHz 486)
  5466.  F8h    2Ch    00h      ???        PS/2 Model 95 XP
  5467.  F8h    2Ch    01h      ???        PS/2 Model 95 (20 MHz 486SX)
  5468.  F8h    2Dh    00h      ???        PS/2 Model 90 XP (20 MHz 486SX)
  5469.  F8h    2Eh    00h      ???        PS/2 Model 95 XP
  5470.  F8h    2Eh    00h      ???        PS/2 Model 95 XP486 (20 Mhz 486SX)
  5471.  F8h    2Eh    01h      ???        PS/2 Model 95 (20 MHz 486SX + 487SX)
  5472.  F8h    2Fh    00h      ???        PS/2 Model 90 XP (20 MHz 486SX + 487SX)
  5473.  F8h    30h    00h      ???        PS/1 Model 2121 (16 MHz 386SX)
  5474.  F8h    33h    00h      ???        PS/2 Model 30-386
  5475.  F8h    34h    00h      ???        PS/2 Model 25-386
  5476.  F8h    36h    00h      ???        PS/2 Model 95 XP
  5477.  F8h    37h    00h      ???        PS/2 Model 90 XP
  5478.  F8h    38h    00h      ???        PS/2 Model 57
  5479.  F8h    39h    00h      ???        PS/2 Model 95 XP
  5480.  F8h    3Fh    00h      ???        PS/2 Model 90 XP
  5481.  F8h    40h    00h      ???        PS/2 Model 95 XP
  5482.  F8h    41h    00h      ???        PS/2 Model 77
  5483.  F8h    45h    00h      ???        PS/2 Model 90 XP (Pentium)
  5484.  F8h    46h    00h      ???        PS/2 Model 95 XP (Pentium)
  5485.  F8h    47h    00h      ???        PS/2 Model 90/95 E (Pentium)
  5486.  F8h    48h    00h      ???        PS/2 Model 85
  5487.  F8h    49h    00h      ???        PS/ValuePoint 325T
  5488.  F8h    4Ah    00h      ???        PS/ValuePoint 425SX
  5489.  F8h    4Bh    00h      ???        PS/ValuePoint 433DX
  5490.  F8h    4Eh    00h      ???        PS/2 Model 295
  5491.  F8h    50h    00h      ???        PS/2 Model P70 (8573) (16 MHz 386)
  5492.  F8h    50h    01h    12/16/89    PS/2 Model P70 (8570-031)
  5493.  F8h    52h    00h      ???        PS/2 Model P75 (33 MHz 486)
  5494.  F8h    56h    00h      ???        PS/2 Model CL57 SX
  5495.  F8h    57h    00h      ???        PS/2 Model 90 XP
  5496.  F8h    58h    00h      ???        PS/2 Model 95 XP
  5497.  F8h    59h    00h      ???        PS/2 Model 90 XP
  5498.  F8h    5Ah    00h      ???        PS/2 Model 95 XP
  5499.  F8h    5Bh    00h      ???        PS/2 Model 90 XP
  5500.  F8h    5Ch    00h      ???        PS/2 Model 95 XP
  5501.  F8h    5Dh    00h      ???        PS/2 Model N51 SLC
  5502.  F8h    5Eh    00h      ???        IBM ThinkPad 700
  5503.  F8h    61h    ***      ???        Olivetti P500
  5504.  F8h    62h    ***      ???        Olivetti P800
  5505.  F8h    80h    00h      ???        PS/2 Model 80 (25 MHz 386)
  5506.  F8h    80h    01h    11/21/89    PS/2 Model 80-A21 (25 Mhz 386)
  5507.  F8h    81h    00h      ???        PS/2 Model 55-5502
  5508.  F8h    87h    00h      ???        PS/2 Model N33SX
  5509.  F8h    88h    00h      ???        PS/2 Model 55-5530T
  5510.  F8h    97h    00h      ???        PS/2 Model 55 Note N23SX
  5511.  F8h    99h    00h      ???        PS/2 Model N51 SX
  5512.  F8h    F2h    30h      ???        Reply Model 32
  5513.  F8h    F6h    30h      ???        Memorex Telex
  5514.  F8h    FDh    00h      ???        IBM Processor Complex (with VPD)
  5515.  F8h    ???    ???      ???        PS/2 Model 90 (25 MHz 486SX)
  5516.  F8h    ???    ???      ???        PS/2 Model 95 (25 MHz 486SX)
  5517.  F8h    ???    ???      ???        PS/2 Model 90 (25 MHz 486SX + 487SX)
  5518.  F8h    ???    ???      ???        PS/2 Model 95 (25 MHz 486SX + 487SX)
  5519.  E4h    ???    ???      ???        Triumph Adler PC/XT
  5520.  E1h    ???    ???      ???        ??? (checked for by DOS4GW.EXE)
  5521.  E1h    00h    00h      ???        PS/2 Model 55-5530 Laptop
  5522.  D9h    ???    ???      ???        Peacock XT
  5523.  9Ah    *    *      ???        Compaq XT/Compaq Plus
  5524.  30h    ???    ???      ???        Sperry PC
  5525.  2Dh    *    *      ???        Compaq PC/Compaq Deskpro
  5526.  ???    56h    ???      ???        Olivetti, unknown model
  5527.  ???    74h    ???      ???        Olivetti, unknown model
  5528. Notes:    BIOS dates may vary without changes to the revision code, especially
  5529.       for non-IBM machines
  5530.     * This BIOS call is not implemented in these early versions or under
  5531.       Linux's DOSEMU.  Read the Model byte at F000h:FFFEh and BIOS date at
  5532.       F000h:FFF5h instead.
  5533.    ** These BIOS versions require the DASDDRVR.SYS patches.
  5534.   *** These Olivetti and Epson machines store the submodel in the byte at
  5535.     F000h:FFFDh.
  5536. SeeAlso: #0426,#0433
  5537.  
  5538. (Table 0433)
  5539. Values for Dell model byte:
  5540.  02h    Dell 200
  5541.  03h    Dell 300
  5542.  05h    Dell 220
  5543.  06h    Dell 310
  5544.  07h    Dell 325
  5545.  09h    Dell 310A
  5546.  0Ah    Dell 316
  5547.  0Bh    Dell 220E
  5548.  0Ch    Dell 210
  5549.  0Dh    Dell 316SX
  5550.  0Eh    Dell 316LT
  5551.  0Fh    Dell 320LX
  5552.  11h    Dell 425E
  5553. SeeAlso: #0426,#0432
  5554.  
  5555. Format of Compaq product information:
  5556. Address        Size    Description    (Table 0434)
  5557.  F000h:FFE4h    BYTE    product family code (first byte)
  5558.  F000h:FFE4h    BYTE    Point release number
  5559.  F000h:FFE4h    BYTE    ROM version code
  5560.  F000h:FFE4h    BYTE    product family code (second byte)
  5561.  F000h:FFE8h    WORD    BIOS type code
  5562. SeeAlso: #0435,#0437
  5563.  
  5564. Format of Hewlett-Packard ROM ID at F000h:00F8h:
  5565. Offset    Size    Description    (Table 0435)
  5566.  00h  2 BYTEs    signature "HP" (48h 50h)
  5567.  02h  2 BYTEs    00h 00h
  5568.  04h    BYTE    secondary code revision
  5569.  05h    BYTE    primary code revision
  5570.  06h    BYTE    date code, year-1960 (BCD)
  5571.  07h    BYTE    date code, week of year (BCD)
  5572. SeeAlso: #0434,#0436
  5573.  
  5574. Bitfields for Hewlett-Packard product identifier:
  5575. Bit(s)    Description    (Table 0436)
  5576.  4-0    machine code
  5577.     0 original Vectra
  5578.     1 ES/12
  5579.     2 RS/20
  5580.     3 Portable/CS
  5581.     4 ES
  5582.     5 CS
  5583.     6 RS/16
  5584.     other reserved
  5585.  7-5    CPU type
  5586.     0 = 80286
  5587.     1 = 8088
  5588.     2 = 8086
  5589.     3 = 80386
  5590.     other reserved
  5591. SeeAlso: #0435
  5592.  
  5593. Format of Toshiba laptop information:
  5594. Offset    Size    Description    (Table 0437)
  5595.  00h  8 BYTEs    ASCII product number (e.g. "T2200SX ")
  5596.  08h  8 BYTEs    ASCII version number (e.g. "V1.20   ")
  5597.  10h  8 BYTEs    ASCII signature string "TOSHIBA "
  5598.  18h  8 BYTEs    always zero???
  5599.  20h    DWORD    -> built-in BIOS setup program entry point or 0000h:0000h
  5600. Note:    this record is located at F000h:E000h
  5601. SeeAlso: #0434,#0435
  5602.  
  5603. (Table 0438)
  5604. Values for Toshiba product ID:
  5605. model prodID   version      date       product number
  5606.  FEh    29h        ../..)..   Toshiba T1000LE
  5607.  FEh    2Ah        ../..*..   Toshiba T1000XE
  5608.  FEh    2Bh        ../..+..   Toshiba T1000SE
  5609.  FEh    2Ch        ../..,..   Toshiba T1000
  5610.  FEh    2Dh        ../..-..   Toshiba T1200F
  5611.  FEh    2Dh    V4.00    12/26-87   Toshiba T1200H
  5612.  FEh    2Eh        ../.....   Toshiba T1100+
  5613.  FCh    22h        ../.."..   Toshiba T8500
  5614.  FCh    26h        01/15&88   Toshiba T5200
  5615.  FCh    27h        ../..'..   Toshiba T5100
  5616.  FCh    28h        ../..(..   Toshiba T2000
  5617.  FCh    2Ah        12/26*89   Toshiba T1200XE
  5618.  FCh    2Bh        ../..+..   Toshiba T1600
  5619.  FCh    2Ch        ../..,..   Toshiba T3100e
  5620.  FCh    2Dh        ../..-..   Toshiba T3200
  5621.  FCh    2Fh        ../../..   Toshiba T3100
  5622.  FCh    34h    V1.50    02/04494   Toshiba T100X
  5623.  FCh    38h        ../..8..   Toshiba T2000SXe
  5624.  FCh    39h    V1.20    09/16991   Toshiba T2200SX
  5625.  FCh    39h    V1.40    10/01992   Toshiba T2200SX
  5626.  FCh    3Ch    V1.50    01/28<91   Toshiba T2000SX
  5627.  FCh    3Dh        ../..=..   Toshiba T3200SXC
  5628.  FCh    3Eh        ../..>..   Toshiba T3100SX
  5629.  FCh    3Fh        ../..?..   Toshiba T3200SX
  5630.  FCh    40h        ../..@..   Toshiba T4500C
  5631.  FCh    41h    V1.20    04/05A92   Toshiba T4500     ("T4500SXC" ???)
  5632.  FCh    45h    V3.20    04/14E92   Toshiba T4400SX   ("C" or "SXC" on cover)
  5633.  FCh    45h        01/13E93   Toshiba T4400SXC
  5634.  FCh    46h *        ../..F..   Toshiba T6400
  5635.  FCh    46h *        ../..F..   Toshiba T6400C
  5636.  FCh    5Fh    V1.40    01/18_94   Toshiba T3300SL
  5637.  FCh    69h        ../..i..   Toshiba T1900C    ("T1900CT" ???)
  5638.  FCh    6Ah    V1.30    05/19j93   Toshiba T1900     ("T1900S" ???)
  5639.  FCh    6Dh    V1.10    12/25m92   Toshiba T1850C
  5640.  FCh    6Eh    V1.00    08/19n92   Toshiba T1850
  5641.  FCh    6Eh    V1.10    12/25n92   Toshiba T1850
  5642.  FCh    6Fh    V1.00    07/17o92   Toshiba T1800
  5643.  FCh    6Fh    V1.10    12/25o92   Toshiba T1800
  5644.  FCh    7Eh    V1.30    06/17~93   Toshiba T4600C
  5645.  FCh    7Fh    V1.40    11/10x94   Toshiba T4600
  5646.  FCh    8Ah    V1.30    10/22x93   Toshiba T6600C
  5647.  FCh    91h    V1.20    07/15x94   Toshiba T2400CT
  5648.  FCh    91h    V5.00    07/28x95   Toshiba T2400CS/CT
  5649.  FCh    92h    V5.00    07/28x95   Toshiba T3600CT
  5650.  FCh    96h *    V1.40    12/08x94   Toshiba T200
  5651.  FCh    96h *    V1.50    12/08x94   Toshiba T200CS    (T200)
  5652.  FCh    97h        ../..x..   Toshiba T4800CT
  5653.  FCh    98h *    V1.10    12/22x93   Toshiba T1910
  5654.  FCh    98h *    V2.40    07/12x94   Toshiba T1910/CS    (T19XX)
  5655.  FCh    99h        ../..x..   Toshiba T4700CS
  5656.  FCh    9Bh    V2.30    01/31x94   Toshiba T4700CT
  5657.  FCh    9Bh    V2.50    03/22x94   Toshiba T4700CT
  5658.  FCh    9Bh    V5.00    07/28x95   Toshiba T4700CT
  5659.  FCh    9Ch    V1.30    01/11x94   Toshiba T1950CT
  5660.  FCh    9Ch    V2.50    07/22x94   Toshiba T1950CT    (T19XX)
  5661.  FCh    9Dh *    V2.40    07/12x94   Toshiba T1950/CS    (T19XX)
  5662.  FCh    9Eh *    V1.20    12/25x93   Toshiba T3400
  5663.  FCh    9Eh *    V1.30    03/22x94   Toshiba T3400/CT
  5664.  FCh    B5h **    V5.10    08/25x95   Toshiba T2110/CS    (T21XX)
  5665.  FCh    B5h    V5.10    08/25x95   Toshiba T2130CS/CT    (T21XX)
  5666.  FCh    BAh    V1.30    02/16x95   Toshiba T2150CDS/CDT
  5667.  FCh    BAh    V5.00    07/27x95   Toshiba T2150CDS/CDT (T2150)
  5668.  FCh    BBh **    V1.30    01/25x95   Toshiba T2100/CS/CT
  5669.  FCh    BBh **    V5.00    07/27x95   Toshiba T2100/CS/CT
  5670.  FCh    BCh    V1.20    12/05x94   Toshiba T2450CT
  5671.  FCh    BCh    V5.00    07/28x95   Toshiba T2450CT
  5672.  FCh    BEh    V5.00    07/28x95   Toshiba T4850CT
  5673.  FCh    C0h    V5.20    05/30x96   Toshiba 420CDS/CDT
  5674.  FCh    C1h    V5.20    03/27x96   Toshiba 100CS
  5675.  FCh    C3h    V5.60    07/19x96   Toshiba 710CDT / 720CDT
  5676.  FCh    C6h    V5.30    11/30x95   Toshiba 410CS/CDT
  5677.  FCh    CAh    V5.10    08/18x95   Toshiba 400CS/CDT
  5678.  FCh    CAh    V5.40    12/18x95   Toshiba 400CS/CDT
  5679.  FCh    CBh    V5.10    09/01x95   Toshiba 610CT
  5680.  FCh    CCh    V5.50    06/13x96   Toshiba 700CS/CT
  5681.  FCh    CFh    V5.00    08/07x95   Toshiba T4900CT
  5682.  FCh    DCh    V5.10    06/17x96   Toshiba 650CT
  5683.  FCh    DCh    V5.10    05/10x96   Toshiba 110CS/CT
  5684.  FCh    DDh    V5.10    05/10x96   Toshiba 110CS/CT
  5685.  FCh    DFh    V5.20    05/27x96   Toshiba 500CS/CDT
  5686.  FCh    ???    V5.???    ../..x..   Toshiba 620CT
  5687.  FCh    ???    V5.???    ../..x..   Toshiba 660CDT
  5688.  FCh    ???    V5.30    11/22/96   Toshiba 730CDT
  5689.  FCh    ???    V6.00    09/20/96   Toshiba 200CDS/CDT
  5690.  FCh    ???    V6.20    11/14/96   Toshiba 430CDS/CDT
  5691.  FCh    ???    V6.40    12/05/96   Toshiba 510CS/CDT
  5692. Notes:    the 8-bit ASCII graphics character in the "date" column above
  5693.       has been substituted by "x" if larger than 80h
  5694.     BIOS version numbers and dates may vary, esp. due to harddisk and
  5695.       (flash) BIOS upgrades; all BIOS versions 5.xx are flash updates
  5696.       for Windows95, the product number may indicate the series only
  5697.       (T21XX) or does no longer contain the exact type suffix (CS/CT)
  5698.     the most recent versions of the BIOS have stopped including the
  5699.       product ID code in the BIOS date
  5700.     [*] These models have monochrome and color versions which can be
  5701.       distinguished with INT 42/AX=7503h (WD90C24 chipset)
  5702.     [**] These models have monochrome and color versions which can be
  5703.       distinguished with INT 10/AX=5F50h (CT655xx chipset)
  5704.     models not found here like T21x5 are variants differing only in
  5705.       bundled software
  5706. SeeAlso: #0432
  5707. --------B-15C1-------------------------------
  5708. INT 15 - SYSTEM - RETURN EXTENDED-BIOS DATA-AREA SEGMENT ADDRESS (PS)
  5709.     AH = C1h
  5710. Return: CF set on error
  5711.     CF clear if successful
  5712.         ES = segment of data area
  5713. SeeAlso: AH=04h"ABIOS"
  5714. --------M-15C200-----------------------------
  5715. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - ENABLE/DISABLE
  5716.     AX = C200h
  5717.     BH = new state
  5718.         00h disabled
  5719.         01h enabled
  5720. Return: CF set on error
  5721.     AH = status (see #0439)
  5722. Note:    IBM classifies this function as required
  5723. SeeAlso: AX=C201h,AX=C207h,AX=C208h
  5724.  
  5725. (Table 0439)
  5726. Values for pointing device function status:
  5727.  00h    successful
  5728.  01h    invalid function
  5729.  02h    invalid input
  5730.  03h    interface error
  5731.  04h    need to resend
  5732.  05h    no device handler installed
  5733. --------M-15C201-----------------------------
  5734. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - RESET
  5735.     AX = C201h
  5736. Return: CF set on error
  5737.         AH = status (see #0439)
  5738.     CF clear if successful
  5739.         BH = device ID
  5740.         BL = value returned by attached device after reset
  5741.         AAh if device is a mouse
  5742. Notes:    after successful completion of this call, the pointing device is set
  5743.       as follows: disabled, sample rate 100 Hz, resolution 4 counts/mm,
  5744.       scaling 1:1, unchanged data package size
  5745.     IBM classifies this function as required
  5746. SeeAlso: INT 33/AX=0000h,AX=C200h,AX=C207h
  5747. --------M-15C202-----------------------------
  5748. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - SET SAMPLING RATE
  5749.     AX = C202h
  5750.     BH = sampling rate
  5751.         00h 10/second
  5752.         01h 20/second
  5753.         02h 40/second
  5754.         03h 60/second
  5755.         04h 80/second
  5756.         05h 100/second
  5757.         06h 200/second
  5758. Return: CF set on error
  5759.         AH = status (see #0439)
  5760. SeeAlso: INT 33/AX=001Ch
  5761. --------M-15C203-----------------------------
  5762. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - SET RESOLUTION
  5763.     AX = C203h
  5764.     BH = resolution (see #0440)
  5765. Return: CF set on error
  5766.         AH = status (see #0439)
  5767.  
  5768. (Table 0440)
  5769. Values for pointing device resolution:
  5770.  00h    one count per mm
  5771.  01h    two counts per mm
  5772.  02h    four counts per mm
  5773.  03h    eight counts per mm
  5774. --------M-15C204-----------------------------
  5775. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - GET TYPE
  5776.     AX = C204h
  5777. Return: CF set on error
  5778.         AH = status (see #0439)
  5779.     CF clear if successful
  5780.         BH = device ID
  5781. --------M-15C205-----------------------------
  5782. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - INITIALIZE
  5783.     AX = C205h
  5784.     BH = data package size (1 - 8 bytes)
  5785. Return: CF set on error
  5786.         AH = status (see #0439)
  5787. Note:    the pointing device is set as follows: disabled, 100 Hz sample rate,
  5788.       resolution 4 counts/mm, scaling 1:1
  5789. SeeAlso: AX=C201h
  5790. --------M-15C206-----------------------------
  5791. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - EXTENDED COMMANDS
  5792.     AX = C206h
  5793.     BH = subfunction
  5794.         00h return device status
  5795.         Return: BL = pointing device status (see #0441)
  5796.             CL = resolution (see #0440)
  5797.             DL = sample rate, reports per second
  5798.         01h set scaling at 1:1
  5799.         02h set scaling at 2:1
  5800. Return: CF set on error
  5801.         AH = status (see #0439)
  5802.  
  5803. Bitfields for pointing device status:
  5804. Bit(s)    Description    (Table 0441)
  5805.  0    right button pressed
  5806.  1    reserved
  5807.  2    left button pressed
  5808.  3    reserved
  5809.  4    0 if 1:1 scaling, 1 if 2:1 scaling
  5810.  5    device enabled
  5811.  6    0 if stream mode, 1 if remote mode
  5812.  7    reserved
  5813. --------M-15C207-----------------------------
  5814. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - SET DEVICE HANDLER ADDR
  5815.     AX = C207h
  5816.     ES:BX -> FAR user device handler or 0000h:0000h to cancel
  5817. Return: CF set on error
  5818.         AH = status (see #0439)
  5819. Note:    when the subroutine is called, it is passed the following values on
  5820.       the stack; the handler should return with a FAR return without
  5821.       popping the stack:
  5822.         WORD 1: status (see #0442)
  5823.         WORD 2: X data (high byte = 00h)
  5824.         WORD 3: Y data (high byte = 00h)
  5825.         WORD 4: 0000h
  5826. SeeAlso: INT 33/AX=000Ch
  5827.  
  5828. Bitfields for pointing device status:
  5829. Bit(s)    Description    (Table 0442)
  5830.  15-8    reserved (0)
  5831.  7    Y data overflowed
  5832.  6    X data overflowed
  5833.  5    Y data is negative
  5834.  4    X data is negative
  5835.  3    reserved (1)
  5836.  2    reserved (0)
  5837.  1    right button pressed
  5838.  0    left button pressed
  5839. --------M-15C208-----------------------------
  5840. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE - WRITE TO POINTER PORT
  5841.     AX = C208h
  5842.     BL = byte to be sent to the pointing device
  5843. Note:    IBM classifies this function as optional
  5844. SeeAlso: AX=C200h,AX=C209h
  5845. --------M-15C209-----------------------------
  5846. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE - READ FROM POINTER PORT
  5847.     AX = C209h
  5848. Return: BL = first byte read from pointing device
  5849.     CL = second byte read
  5850.     DL = third byte read
  5851. Note:    IBM classifies this function as optional
  5852. SeeAlso: AX=C200h,AX=C208h
  5853. --------M-15C2-------------------------------
  5854. INT 15 - IBM SurePath BIOS - Officially "Private" Function
  5855.     AH = C2h
  5856.     AL = 10h-23h
  5857. SeeAlso: AH=07h"IBM",AH=3Eh"IBM"
  5858. --------B-15C3------------------------------
  5859. INT 15 - SYSTEM - ENABLE/DISABLE WATCHDOG TIMEOUT (PS50+)
  5860.     AH = C3h
  5861.     AL = function
  5862.         00h disable PS/2 watchdog timer
  5863.         01h enable PS/2 watchdog timer
  5864.         BX = timer counter (0001h-00FFh)
  5865.         02h disable Gearbox system
  5866.         03h enable Gearbox system
  5867. Return: CF set on error
  5868.     CF clear if successful
  5869. Note:    the watchdog timer generates an NMI
  5870. SeeAlso: INT 21/AH=2Bh/CX=6269h"WDTSR"
  5871. --------B-15C4-------------------------------
  5872. INT 15 - SYSTEM - PROGRAMMABLE OPTION SELECT (PS50+)
  5873.     AH = C4h
  5874.     AL = subfunction
  5875.         00h return base POS register address
  5876.         01h enable selected slot for setup
  5877.         BL = slot number (1 to 8)
  5878.         02h disable setup for all slots (enable adapter)
  5879. Return: CF set on error
  5880.     DX = base POS register address (if subfunction 00h)
  5881. SeeAlso: AH=C6h
  5882. --------B-15C5-------------------------------
  5883. INT 15 UC - OS HOOK - ROM BIOS TRACING CALLOUT (PS30/286,PS50Z,PS95)
  5884.     AH = C5h
  5885.     AL = interrupt being invoked
  5886.         01h INT 19
  5887.         02h INT 14
  5888.         03h INT 16
  5889.         04h INT 40 (floppy INT 13)
  5890.         05h INT 17
  5891.         06h INT 10
  5892.         07h INT 12
  5893.         08h INT 11
  5894.         09h INT 1A
  5895. Return: all registers except AX must be preserved
  5896. Notes:    called as the very first action of the indicated ROM BIOS interrupt
  5897.       handlers on the PS/2 Models 30/286, 50Z, and 95
  5898.     default handler does nothing and returns CF clear for the above
  5899.       subfunctions, CF set and AH=86h for all other subfunctions
  5900.     value of AX passed to the original interrupt handler is pushed on
  5901.       stack immediately prior to call
  5902. --------B-15C6-------------------------------
  5903. INT 15 U - later PS/2 models - GET POS DATA
  5904.     AH = C6h
  5905.     ???
  5906. Return: ???
  5907. Notes:    this function is referenced by name and number in some IBM BIOS manuals
  5908.     IBM reports that "there are a number of problems with this call" and
  5909.       does not recommend its use.
  5910. SeeAlso: AH=C4h
  5911. --------B-15C7-------------------------------
  5912. INT 15 - SYSTEM - later PS/2s - RETURN MEMORY-MAP INFORMATION
  5913.     AH = C7h
  5914.     DS:SI -> user supplied memory map table (see #0443)
  5915. Notes:    call AH=C0h and examine bit 4 of feature byte 2 to check if this
  5916.       function is supported
  5917.     IBM classifies this function as optional
  5918. Return: CF set on error, clear if successful
  5919. SeeAlso: AH=C0h,AH=C9h,AH=D1h,AX=E820h
  5920.  
  5921. Format of memory-map table structure:
  5922. Offset    Size    Description    (Table 0443)
  5923.  00h    WORD    length of table (excluding this word)
  5924.  02h    DWORD    local memory between 1M and 16M, in 1K blocks
  5925.  06h    DWORD    local memory between 16M and 4G, in 1K blocks
  5926.  0Ah    DWORD    system memory between 1M and 16M, in 1K blocks
  5927.  0Eh    DWORD    system memory between 16M and 4G, in 1K blocks
  5928.  12h    DWORD    cacheable memory between 1M and 16M, in 1K blocks
  5929.  16h    DWORD    cacheable memory between 16M and 4G, in 1K blocks
  5930.  1Ah    DWORD    1K blocks before start of non-system memory between 1M and 16M
  5931.  1Eh    DWORD    1K blocks before start of non-system memory between 16M and 4G
  5932.  22h    WORD    start segment of largest free block from C0000h-DFFFFh
  5933.  24h    WORD    size of largest free block
  5934.  26h    DWORD    reserved
  5935. --------B-15C8-------------------------------
  5936. INT 15 - SYSTEM - ENABLE/DISABLE PROCESSOR FUNCTIONS
  5937.     AH = C8h
  5938.     AL = function
  5939.         00h disable L1 cache
  5940.         01h enable L1 cache
  5941.         ---models 90 and 95 only---
  5942.         02h disable L2 cache
  5943.         03h enable L2 cache
  5944.         04h disable both caches
  5945.         05h enable both caches
  5946.         06h return status of both caches
  5947.         07h-FFh Reserved
  5948. Return: CF set on error
  5949.     CF clear if successful
  5950.     AH = status (see #0444)
  5951.     For subfunction 06h only:
  5952.         BL = status of L1 cache
  5953.         00h enabled
  5954.         01h disabled or not installed
  5955.         02h disabled due to test error (can not be enabled)
  5956.         BH = status of L2 cache (same codes as BL)
  5957. Notes:     supported by at least PS/2 70, 70/486, 80-A21, 90, 95
  5958.     call AH=C0h and examine bit 3 of feature byte 2 to check if this
  5959.       function is supported.
  5960.     on a 486 system, any external caches must be disabled when the
  5961.       on-chip cache (L1) is disabled.
  5962. SeeAlso: AH=C0h
  5963.  
  5964. (Table 0444)
  5965. Values for status:
  5966.  00h    operation successful
  5967.  01h    function choice (in AL) is invalid
  5968.  02h    NVRAM data is invalid
  5969.  03h    cache test error
  5970.  04h    (90 and 95 only) cannot perform operation requested due to state of
  5971.       other cache (also see note above)
  5972.  05h    no L2 cache is present
  5973.  07h    invalid input values
  5974.  09h    CPU in protected mode
  5975. --------B-15C9-------------------------------
  5976. INT 15 - newer PS/2; various BIOSes - GET CPU TYPE AND MASK REVISION
  5977.     AH = C9h
  5978.     AL = 10h (may be required on some non-PS BIOSes)
  5979. Return: CF clear if successful
  5980.         AH = 00h
  5981.         CH = CPU type (see #0445)
  5982.         CL = mask revision (stepping level) (see #0446)
  5983.     CF set on error
  5984.         AH = status (80h,86h = function not supported)
  5985. Notes:    the BIOS must save DX at startup in order to be able to support this
  5986.       call; PS/2 Models 56, 57, 90, and 95 are known to support it
  5987.     the PS/2 BIOS merely reads CMOS locations 190h (type) and 191h (rev)
  5988.     IBM classifies this function as optional
  5989. SeeAlso: AX=D100h,AX=DA92h
  5990.  
  5991. (Table 0445)
  5992. Values for CPU type:
  5993.  03h    80386DX or clone
  5994.  04h    80486
  5995.  05h    Pentium
  5996.  23h    80386SX or clone
  5997.  33h    Intel i376
  5998.  43h    80386SL or clone
  5999.  A3h    IBM 386SLC
  6000.  A4h    IBM 486SLC
  6001.  
  6002. (Table 0446)
  6003. Values for stepping level:
  6004. ---i376 (type code 33h)---
  6005.  05h    A0
  6006.  08h    B
  6007. ---80386/80386DX (type code 03h)---
  6008.  03h    Intel B1 to B10, Am386DX/DXL step A
  6009.  05h    Intel D0
  6010.  08h    Intel D1/D2/E1, Am386DX/DXL step B
  6011. ---80386SL (type code 43h)---
  6012.  05h    A
  6013.  1xh    B
  6014. ---80386SX (type code 23h)---
  6015.  04h    Intel A0
  6016.  05h    Intel B, Am386SX/SXL step A1
  6017.  08h    Intel C/D1, Am386SX/SXL step B
  6018.  09h    Intel 386CX/386EX/386SXstatic step A
  6019. ---80486DX (type code 04h)---
  6020.  00h    Intel A0/A1
  6021.  01h    Intel B2 to B6
  6022.  02h    Intel C0
  6023.  03h    Intel C1
  6024.  04h    Intel D0
  6025.  10h    Intel cA2/cA3, Cx486SLC step A
  6026.  11h    Intel cB0/cB1
  6027. ---486DX2 (type code 04h)---
  6028.  02h    Am486DX2 (unknown stepping)
  6029.  32h    Intel DX2/Overdrive steps A0 to A2
  6030.  33h    Intel DX2/Overdrive step B1
  6031. ---486SX (type code 04h)---
  6032.  20h    Intel A0
  6033.  22h    Intel B0
  6034.  27h    Intel cA0
  6035.  28h    Intel cB0
  6036. ---486SL (type code 04h)---
  6037.  40h    Intel A
  6038. ---IntelSX2 (type code 04h)---
  6039.  5xh    Intel A
  6040. ---IntelDX4 (type code 04h)---
  6041.  8xh    Intel A
  6042. ---487SX (type code 04h)---
  6043.  20h    Intel A0
  6044.  21h    Intel B0
  6045. ---Pentium (type code 05h)---
  6046.  0xh    Intel P5 steps Ax (1993)
  6047.  1xh    Intel P5 steps Bx (1994)
  6048.  2xh    Intel P54C step A
  6049. ---RapidCAD (type code 03h)---
  6050.  40h    A
  6051. --------B-15CA-------------------------------
  6052. INT 15 U - PS/2 Model 95 - READ/WRITE CMOS MEMORY
  6053.     AH = CAh
  6054.     AL = function
  6055.         00h read CMOS
  6056.         Return: CL = value of CMOS location
  6057.         01h write CMOS
  6058.         CL = new value for CMOS location
  6059.     BL = CMOS location (0Eh-3Fh)
  6060. Return: CF clear if successful
  6061.         AH = 00h
  6062.     CF set on error
  6063.         AH = error code (see #0447)
  6064. Note:    writes do not update the CMOS checksum
  6065.  
  6066. (Table 0447)
  6067. Values for CMOS read/write error code:
  6068.  01h    CMOS lost power or has invalid checksum
  6069.  03h    specified location out of range (too high)
  6070.  04h    specified location out of range (too low)
  6071.  80h    unsupported function (PC)
  6072.  86h    unsupported function (XT)
  6073. --------B-15CB-------------------------------
  6074. INT 15 U - PS/2 Model 95 - RESERVED
  6075.     AH = CBh
  6076.     ???
  6077. Return: ???
  6078. --------B-15CC-------------------------------
  6079. INT 15 U - PS/2 Model 95 - RESERVED
  6080.     AH = CCh
  6081.     ???
  6082. Return: ???
  6083. --------V-15CCCC-----------------------------
  6084. INT 15 U - Toshiba laptops - VCHAD.EXE - INSTALLATION CHECK
  6085.     AX = CCCCh
  6086. Return: AX = ABCDh if installed
  6087. Note:    supported by Toshiba VGA change display utility VCHAD.EXE ver 2.90+
  6088.       older versions have the string "VCHAD" 2 bytes after the address of
  6089.       the INT 15 handler which is hooked by all versions for the SysReq key
  6090. SeeAlso: AH=85h
  6091. --------B-15CD-------------------------------
  6092. INT 15 U - PS/2 Model 95 - RESERVED
  6093.     AH = CDh
  6094.     ???
  6095. Return: ???
  6096. --------B-15CE--BL00-------------------------
  6097. INT 15 - later PS/2s - ALLOCATE DMA ARBITRATION LEVEL
  6098.     AH = CEh
  6099.     BL = 00h-0Eh arbitration level to be allocated
  6100.          0Fh-FFh reserved
  6101.     AL = option byte
  6102.         bit 7-1: reserved (0)
  6103.         bit 0: 0 = need DMA channel for arbitration level requested
  6104.            1 = no channel required for arbitration level
  6105. Return: CF set on error
  6106.         AH = status (80h,86h = function not supported)
  6107.     CF clear on success
  6108.         AL = channel number
  6109.         00h-07h channel number allocated for the arbiration level
  6110.         08h-FEh reserved
  6111.         FFh    no channel requested for arbitration level
  6112.         AH = status (see #0448)
  6113. Notes:     arbitration level 00h has the highest priority, 0Eh the lowest
  6114.      to perform a DMA transfer operation, be sure to call this function
  6115.        first, and call AH=CFh afterward.  Failure to use this function
  6116.        can cause unpredictable results.
  6117. SeeAlso: AH=CFh
  6118.  
  6119. (Table 0448)
  6120. Values for DMA arbitration status:
  6121.  00h    success
  6122.  01h    arbitration level not available
  6123.  02h    channel not available
  6124.  03h    invalid arbitration level passed
  6125. --------B-15CF-------------------------------
  6126. INT 15 - later PS/2s - DEALLOCATE DMA ARBITRATION LEVEL
  6127.     AH = CFh
  6128.     BL = arbitration level to be deallocated (see AH=CEh)
  6129. Return: CF set on error
  6130.         AH = status (80h,86h = function not supported)
  6131.     CF clear on success
  6132.         AH = status
  6133.         00h success
  6134.         04h arbitration level not allocated
  6135. SeeAlso: AH=CEh
  6136. --------B-15D0-------------------------------
  6137. INT 15 - later PS/2s - RESERVED
  6138.     AH = D0h
  6139.     ???
  6140. Return: ???
  6141. ----------15D042BL00-------------------------
  6142. INT 15 R - Intel Pentium Pro BIOS UPDATE - INSTALLATION CHECK
  6143.     AX = D042h
  6144.     BL = 00h
  6145. Return: CF clear if successful
  6146.     CF set on error
  6147.     AH = status
  6148.         00h successful
  6149.         EBX:ECX = signature "INTELPEP"
  6150.         EDX = BIOS update loader version
  6151.         SI = number of 2K update blocks which can be recorded in NVRAM
  6152.         86h not implemented
  6153.     AL = OEM error (if AH is not 00h or 86h, otherwise undefined)
  6154.         00h successful
  6155. Program: the Pentium Pro BIOS update allows the system BIOS or other software
  6156.       to install a microcode patch into the Pentium Pro processor
  6157. Notes:    this API must be called from actual real mode, not V86 mode
  6158.     at least 32K stack space must be available when this function is called
  6159. SeeAlso: AX=D042h/BL=01h,AX=D042h/BL=02h,AX=D042h/BL=03h
  6160. SeeAlso: @xxxxh:xxxxh"Intel BIOS Upgrade",MSR 00000079h
  6161. ----------15D042BL01-------------------------
  6162. INT 15 R - Intel Pentium Pro BIOS UPDATE - WRITE BIOS UPDATE AREA
  6163.     AX = D042h
  6164.     BL = 01h
  6165.     ES:DI -> microcode update block (see #0450)
  6166.     CX,DX,SI = segments of three 64K scratchpad areas for BIOS use
  6167. Return: CF clear if successful
  6168.     CF set on error
  6169.     AH = status (see #0449)
  6170.     AL = OEM error (if AH is not 00h or 86h, otherwise undefined)
  6171.         00h successful
  6172. Notes:    a microcode update may also be initiated by a WRMSR instruction
  6173.       with ECX=0079h, EDX=00000000h, and EAX=linear address of update
  6174.       block (see #0450)
  6175.     at least 32K stack space must be available when this function is called
  6176. SeeAlso: AX=D042h/BL=00h,AX=D042h/BL=02h,AX=D042h/BL=03h,MSR 00000079h
  6177.  
  6178. (Table 0449)
  6179. Values for Pentium Pro BIOS update status:
  6180.  00h    successful
  6181.  86h    not implemented
  6182.  90h    unable to erase NVRAM device
  6183.  91h    unable to write to NVRAM device
  6184.  92h    unable to read storage
  6185.  93h    NVRAM is full
  6186.  94h    specified processor stepping is not present in system
  6187.  95h    invalid header or loader version
  6188.  96h    wrong checksum in header
  6189.  97h    processor rejected the update
  6190.  98h    the same or a more recent update is already stored
  6191.  99h    update block number was out of range
  6192.  
  6193. Format of Pentium Pro microcode update block:
  6194. Offset    Size    Description    (Table 0450)
  6195.  00h    DWORD    update header version number (currently 00000001h)
  6196.         FFFFFFFFh = unused block
  6197.  04h    DWORD    revision number of this microcode update
  6198.  08h    DWORD    update creation date, as BCD mmddyyyy (month,day,year)
  6199.  0Ch    DWORD    family/model/stepping of processor to which update applied
  6200.         (same value as returned by CPUID instruction)
  6201.  10h    DWORD    checksum (used to force sum of all 512 DWORDs of the update
  6202.         block to 00000000h)
  6203.  14h    DWORD    revision number of loader needed to install update
  6204.         (currently 00000001h)
  6205.  18h 24 BYTEs    reserved for future expansion
  6206.  30h 2000 BYTEs    encrypted microcode data
  6207. SeeAlso: MSR 00000079h,OPCODE "CPUID"
  6208. ----------15D042BL02-------------------------
  6209. INT 15 R - Intel Pentium Pro BIOS UPDATE - BIOS UPDATE CONTROL
  6210.     AX = D042h
  6211.     BL = 02h
  6212.     BH = function
  6213.         01h enable update loading at initialization time
  6214.         02h check whether update loading is enabled
  6215.     CX,DX,SI = segments of three 64K scratchpad areas for BIOS use
  6216. Return: CF clear if successful
  6217.     CF set on error
  6218.     AH = status (see #0449)
  6219.         00h successful
  6220.         BL = enabled/disabled flag
  6221.         86h not implemented
  6222.     AL = OEM error (if AH is not 00h or 86h, otherwise undefined)
  6223.         00h successful
  6224. Notes:    this API must be called from actual real mode, not V86 mode
  6225.     at least 32K stack space must be available when this function is called
  6226.     there is no call to disable update loading due to security risks; the
  6227.       BIOS setup can disable loading
  6228. SeeAlso: AX=D042h/BL=00h,AX=D042h/BL=02h,AX=D042h/BL=03h
  6229. ----------15D042BL03-------------------------
  6230. INT 15 R - Intel Pentium Pro BIOS UPDATE - READ BIOS UPDATE AREA
  6231.     AX = D042h
  6232.     BL = 03h
  6233.     ES:DI -> buffer for microcode update block (see #0450)
  6234.     ECX = two real-mode 64K scratchpad segments (upper and lower words)
  6235.     DX = segment of 64K scratchpad area for BIOS use
  6236.     SI = zero-based index number of update block to retrieve
  6237. Return: CF clear if successful
  6238.     CF set on error
  6239.     AH = status
  6240.         00h successful
  6241.         ES:DI buffer filled with 2048-byte update block
  6242.         86h not implemented
  6243.     AL = OEM error (if AH is not 00h or 86h, otherwise undefined)
  6244.         00h successful
  6245. Program: the Pentium Pro BIOS update allows the system BIOS or other software
  6246.       to install a microcode patch into the Pentium Pro processor
  6247. Notes:    this API must be called from actual real mode, not V86 mode
  6248.     at least 32K stack space must be available when this function is called
  6249. SeeAlso: AX=D042h/BL=00h,AX=D042h/BL=01h,AX=D042h/BL=03h
  6250. --------B-15D100DX0000-----------------------
  6251. INT 15 - later PS/2s - GET NUMBER OF DEVICE DESCRIPTOR TABLE (DDT) ENTRIES
  6252.     AX = D100h
  6253.     DX = 0000h (reserved, must set to 0)
  6254. Return: BL = size of one DDT entry, in bytes
  6255.     CX = number of DDT entries
  6256.     AH = return code (see #0451)
  6257.     CF set on error
  6258.     CF clear on success
  6259. SeeAlso: AH=C0h,AH=C7h,AH=C9h,AX=D101h,AX=D102h,AX=D103h,AX=D104h
  6260.  
  6261. (Table 0451)
  6262. Values for return code:
  6263.  00h    success
  6264.  01h    requested DDT entry not found
  6265.  02h    DDT data not valid
  6266.  86h    function not supported
  6267. --------B-15D101-----------------------------
  6268. INT 15 - later PS/2s - RETURN DEVICE DESCRIPTOR TABLE (DDT) ENTRY BY NUMBER
  6269.     AX = D101h
  6270.     BX = number of requested entry (starting with 1)
  6271.     DX = 0000h (reserved, must be set to 0)
  6272.     ES:DI -> buffer to contain DDT entry (see #0452)
  6273. Return: AH = return code (see #0451)
  6274.     CF set on error
  6275.     CF clear on success
  6276.         ES:DI buffer filled with DDT entry
  6277. SeeAlso: AH=C0h,AH=C7h,AH=C9h,AX=D100h,AX=D102h,AX=D104h
  6278.  
  6279. Format of Device Descriptor Table (DDT):
  6280. Offset    Size    Description    (Table 0452)
  6281.  00h    BYTE    bits 7-4: reserved (set to 0)
  6282.         bits 3-0: slot of device (0 = system board)
  6283.  01h    BYTE    bits 7-4: second interrupt for this device (0 = none)
  6284.         bits 3-0: first interrupt for this device (0 = none)
  6285.  02h    BYTE    bits 7-4: second arbitration level for this device
  6286.         bits 3-0: first arbitration level for this device
  6287.  03h    WORD    DDT indicators (see #0453)
  6288.  05h    BYTE    reserved (0)
  6289.  06h    WORD    device ID (0 = none)
  6290.  08h    WORD    starting address of first  I/O block (0 = none)
  6291.  0Ah    WORD    starting address of second I/O block (0 = none)
  6292.  OCh    WORD    starting address of third  I/O block (0 = none)
  6293.  OEh    DWORD    start of first non-system memory block (0 = none)
  6294.  12h    WORD    size of first non-system memory block (in kilobytes)
  6295.  14h    DWORD    start of second non-system memory block (0 = none)
  6296.  18h    WORD    size of second non-system memory block (in kilobytes)
  6297.  1Ah    BYTE    implementation identifier of the device
  6298.  1Bh    BYTE    implementation revision level of the device
  6299. Note:    I/O block addresses and non-system memory addresses are listed in
  6300.       ascending order in each DDT entry.
  6301.  
  6302. Bitfields for DDT indicators:
  6303. Bit(s)    Description    (Table 0453)
  6304.  15    reserved (0)
  6305.  14    second arbitration level exists
  6306.  13    first arbitration level exists
  6307.  12    serial interface is RS-422
  6308.  11    not address limited
  6309.  10    DMA channel used
  6310.  9    second arbitration level can be shared
  6311.  8    first arbitration level can be shared
  6312.  7-0    reserved (0)
  6313. --------B-15D102-----------------------------
  6314. INT 15 - later PS/2s - RETURN DEVICE DESCRIPTOR TABLE (DDT) ENTRY BY I/O ADDRSS
  6315.     AX = D102h
  6316.     BX = entry number at which to start searching
  6317.     CX = requested I/O port address
  6318.     DX = 0000h (reserved, must be set to 0)
  6319.     ES:DI -> buffer to contain DDT entry (see #0452)
  6320. Return: AH = return code (see #0451)
  6321.     BX = DDT entry number where I/O port was found, or total entries
  6322.          plus 1 if port was not found.
  6323.     CF set on error
  6324.     CF clear on success
  6325.         ES:DI buffer filled with DDT entry
  6326. Desc:    the DDT is searched from the specified entry for the I/O port in CX,
  6327.       and the first entry in which it is found is returned
  6328. SeeAlso: AH=C0h,AH=C7h,AH=C9h,AX=D100h,AX=D101h,AX=D103h,AX=D104h
  6329. --------B-15D103DX0000-----------------------
  6330. INT 15 - later PS/2s - RETURN ENTIRE DDT
  6331.     AX = D103h
  6332.     DX = 0000h (reserved, must be set to 0)
  6333.     ES:DI -> buffer to contain DDT entry (see #0452)
  6334. Return: AH = return code (see #0451)
  6335.     CF set on error
  6336.     CF clear on success
  6337.         ES:DI buffer filled with DDT entry
  6338. SeeAlso: AH=C0h,AH=C7h,AH=C9h,AX=D100h,AX=D104h
  6339. --------B-15D104-----------------------------
  6340. INT 15 - later PS/2s - RETURN DEVICE DESCRIPTOR TABLE (DDT) ENTRY BY DEVICE ID
  6341.     AX = D104h
  6342.     BX = entry number at which to start searching
  6343.     CX = requested device ID
  6344.     DX = 0000h (reserved, must be set to 0)
  6345.     ES:DI -> buffer to contain DDT entry (see #0452)
  6346. Return: AH = return code (see #0451)
  6347.     BX = DDT entry number where device ID was found, or total entries
  6348.           plus 1 if port was not found.
  6349.     CF set on error
  6350.     CF clear on success
  6351.         ES:DI buffer filled with DDT entry
  6352. Desc:    the DDT is searched from the specified entry for the device ID in CX,
  6353.       and the first entry in which it is found is returned.
  6354. SeeAlso: AH=C0h,AH=C7h,AH=C9h,AX=D100h,AX=D101h,AX=D103h
  6355. --------B-15D2-------------------------------
  6356. INT 15 - later PS/2s - RESERVED
  6357.     AH = D2h
  6358.     ???
  6359. Return: ???
  6360. --------B-15D3-------------------------------
  6361. INT 15 - later PS/2s - RESERVED
  6362.     AH = D3h
  6363.     ???
  6364. Return: ???
  6365. --------B-15D4-------------------------------
  6366. INT 15 - later PS/2s - GET PHYSICAL FIXED DISK DRIVE NUMBER (SELECTABLE BOOT)
  6367.     AH = D4h
  6368.     DL = logical fixed disk drive number
  6369. Return: AH = return code (see #0454)
  6370.     CF set on error
  6371.     CF clear on success
  6372.         AL = physical fixed disk drive number
  6373.  
  6374. (Table 0454)
  6375. Values for return code:
  6376.  00h    success
  6377.  01h    specified logical drive number is invalid
  6378.  80h    function not supported (on PCjr and PC)
  6379.  86h    function not supported
  6380. --------B-15D5-------------------------------
  6381. INT 15 - later PS/2s - RESERVED
  6382.     AH = D5h
  6383.     ???
  6384. Return: ???
  6385. --------B-15D600BL00-------------------------
  6386. INT 15 - later PS/2s - READ BOOT DEVICE ID
  6387.     AX = D600h
  6388.     BL = 00h
  6389.     DX = device ID
  6390. Return: CF clear if successful
  6391.         AH = 00h
  6392.     CF set on error
  6393.         AH = status (86h for function not supported)
  6394. SeeAlso: AX=D600h/BL=01h,AX=D601h/BL=00h,AX=D602h
  6395. --------B-15D600BL01-------------------------
  6396. INT 15 - later PS/2s - WRITE BOOT DEVICE ID
  6397.     AX = D600h
  6398.     BL = 01h
  6399.     DX = device ID
  6400. Return: CF clear on success
  6401.         AH = 00h
  6402.     CF set on error
  6403.         AH = status (86h for function not supported)
  6404. SeeAlso: AX=D600h/BL=00h,AX=D601h/BL=01h
  6405. --------B-15D601BL00-------------------------
  6406. INT 15 - later PS/2s - READ BOOT DEVICE KEY
  6407.     AX = D601h
  6408.     BL = 00h
  6409.     DX = device ID
  6410. Return: CF clear on success
  6411.         AH = 00h
  6412.     CF set on error
  6413.         AH = status (86h for function not supported)
  6414. SeeAlso: AX=D600h/BL=00h,AX=D601h/BL=01h,AX=D602h
  6415. --------B-15D601BL01-------------------------
  6416. INT 15 - later PS/2s - WRITE BOOT DEVICE KEY
  6417.     AX = D601h
  6418.     BL = 01h
  6419.     DX = device ID
  6420. Return: CF clear on success
  6421.         AH = 00h
  6422.     CF set on error
  6423.         AH = status (86h for function not supported)
  6424. SeeAlso: AX=D600h/BL=01h,AX=D601h/BL=00h
  6425. --------B-15D602-----------------------------
  6426. INT 15 - later PS/2s - QUERY BOOT REFERENCE PARTITION
  6427.     AX = D602h
  6428. Return: CF clear on success
  6429.         AH = 00h
  6430.         AL = status of reference-partition boot request
  6431.         00h boot not requested
  6432.         01h boot requested
  6433.     CF set on error
  6434.         AH = status (86h for function not supported)
  6435. SeeAlso: AX=D601h/BL=00h
  6436. --------X-15D800-----------------------------
  6437. INT 15 - EISA SYSTEM ROM - READ SLOT CONFIGURATION INFORMATION
  6438.     AX = D800h
  6439.     CL = slot number (including embedded and virtual)
  6440. Return: CF clear if successful
  6441.         AH = 00h
  6442.     CF set on error
  6443.         AH = error code (80h,82h,83h,86h,87h)(see #0456)
  6444.     AL = bit flags (see #0455)
  6445.     BH = major revision level of configuration utility
  6446.     BL = minor revision level of configuration utility
  6447.     CX = checksum of configuration file
  6448.     DH = number of device functions
  6449.     DL = combined function information byte (see #0457)
  6450.     SI:DI = 4-byte compressed ID (DI = bytes 0&1, SI = bytes 2&3)
  6451. Note:    call with AL=80h if using 32-bit CS addressing mode instead of 16-bit
  6452. SeeAlso: AX=D801h,AX=D804h
  6453.  
  6454. Bitfields for EISA AL bit flags:
  6455. Bit(s)    Description    (Table 0455)
  6456.  7    set if duplicate IDs
  6457.  6    set if product ID readable
  6458.  4,5    slot type (00=expansion, 01=embedded, 10=virtual device)
  6459.  0-3    duplicate ID number if bit 7 set
  6460. SeeAlso: #0457
  6461.  
  6462. (Table 0456)
  6463. Values for EISA error code:
  6464.  80h    invalid slot number
  6465.  81h    invalid function number
  6466.  82h    EISA CMOS corrupt
  6467.  83h    empty slot
  6468.  84h    error clearing CMOS
  6469.  85h    EISA CMOS is full
  6470.  86h    invalid BIOS-FW function call
  6471.  87h    invalid system configuration
  6472.  88h    config utility version not supported
  6473.  
  6474. Bitfields for EISA combined function information byte:
  6475. Bit(s)    Description    (Table 0457)
  6476.  7    reserved
  6477.  6    slot has free-form data entries
  6478.  5    slot has port initialization entries
  6479.  4    slot has port-range entries
  6480.  3    slot has DMA entries
  6481.  2    slot has IRQ entries
  6482.  1    slot has memory entries
  6483.  0    slot has function type entries
  6484. SeeAlso: #0455
  6485. --------X-15D801-----------------------------
  6486. INT 15 - EISA SYSTEM ROM - READ FUNCTION CONFIGURATION INFORMATION
  6487.     AX = D801h
  6488.     CH = function number to read
  6489.     CL = slot number (including embedded and virtual)
  6490.     DS:SI -> 320-byte buffer for standard configuration data block
  6491. Return: CF clear if successful
  6492.         AH = 00h
  6493.         DS:SI buffer filled
  6494.     CF set on error
  6495.         AH = error code (80h-83h,86h,87h) (see #0456)
  6496.     BX destroyed
  6497. Note:    call with AL=81h if using 32-bit CS addressing mode instead of 16-bit
  6498. --------X-15D802-----------------------------
  6499. INT 15 - EISA SYSTEM ROM - CLEAR NONVOLATILE MEMORY (EISA CMOS)
  6500.     AX = D802h
  6501.     BH = EISA config utility major revision level
  6502.     BL = EISA config utility minor revision level
  6503. Return: CF clear if successful
  6504.         AH = 00h
  6505.     CF set on error
  6506.         AH = error code (84h,86h,88h) (see #0456)
  6507. Note:    call with AL=82h if using 32-bit CS addressing mode instead of 16-bit
  6508. SeeAlso: AX=D803h
  6509. --------X-15D803-----------------------------
  6510. INT 15 - EISA SYSTEM ROM - WRITE NONVOLATILE MEMORY
  6511.     AX = D803h
  6512.     CX = length of data structure (0000h = empty slot)
  6513.         includes two bytes for config file checksum
  6514.     DS:SI -> configuration data
  6515. Return: CF clear if successful
  6516.         AH = 00h
  6517.     CF set on error
  6518.         AH = error code (84h-86h) (see #0456)
  6519. Note:    call with AL=83h if using 32-bit CS addressing mode instead of 16-bit
  6520. SeeAlso: AX=D802h
  6521. --------X-15D804-----------------------------
  6522. INT 15 - EISA SYSTEM ROM - READ PHYSICAL SLOT
  6523.     AX = D804h
  6524.     CL = slot number (including embedded and virtual)
  6525. Return: CF clear if successful
  6526.         AH = 00h
  6527.     CF set on error
  6528.         AH = error code (80h,83h,86h) (see #0456)
  6529.     SI:DI = 4-byte compressed ID (DI = bytes 0&1, SI = bytes 2&3)
  6530. Note:    call with AL=84h if using 32-bit CS addressing mode instead of 16-bit
  6531. SeeAlso: AX=D800h
  6532. --------b-15D820-----------------------------
  6533. INT 15 - Compaq LTE Lite - GET ???
  6534.     AX = D820h
  6535.     DS:SI -> 17-byte buffer for ???
  6536. Return: DS:SI buffer filled (first byte is length of remaining data, unless
  6537.       it is greater than 10h, in which case the second byte is 00h and no
  6538.       other data is returned)
  6539. Note:    this function is also supported by Compaq's EISA System ROM, Contura
  6540.       486/486c/486cx and recent DESKPRO/i ROMs
  6541. SeeAlso: AX=D821h
  6542. --------b-15D821-----------------------------
  6543. INT 15 - Compaq LTE Lite - SET ???
  6544.     AX = D821h
  6545.     DS:SI -> counted string (should not be more than 16 bytes)
  6546. Return: AH = 00h
  6547. Note:    this function is also supported by Compaq's EISA System ROM, Contura
  6548.       486/486c/486cx and recent DESKPRO/i ROMs
  6549. SeeAlso: AX=D820h
  6550. --------b-15D822BL00-------------------------
  6551. INT 15 - Compaq EISA System ROM 04/08/93 - GET ???
  6552.     AX = D822h
  6553.     BL = 00h
  6554.     CX = size of buffer or 0000h to retrieve required buffer size
  6555.     DS:SI -> buffer for ??? (if CX nonzero)
  6556. Return: CF clear if successful
  6557.         AH = 00h
  6558.         DH = 08h
  6559.         CX = required buffer size to retrieve all data (if CX=0 on entry)
  6560.         DS:SI buffer filled (if CX nonzero on entry)
  6561.     CF set on error (BL nonzero)
  6562.         AH = 86h
  6563. --------b-15D823-----------------------------
  6564. INT 15 - Compaq EISA System ROM 04/08/93 - ???
  6565.     AX = D823h
  6566.     BL = subfunction??? (00h or 80h)
  6567.     BH = ???
  6568.     DS:SI -> buffer for ??? (see #0458)
  6569. Return: CF clear if successful
  6570.         AH = 00h
  6571.         DH = 08h
  6572.         DL = ???
  6573.     CF set on error
  6574.         AH = error code
  6575.         86h BL neither 00h nor 80h
  6576.         87h ???
  6577.  
  6578. Format of Compaq EISA buffer:
  6579. Offset    Size    Description    (Table 0458)
  6580.  00h    BYTE    ???
  6581.  01h    WORD    ???
  6582.  03h    BYTE    ???
  6583.  04h    WORD    ???
  6584.  06h    WORD    ???
  6585.     ???
  6586. ----------15D824-----------------------------
  6587. INT 15 - Compaq EISA System ROM 04/08/93 - ???
  6588.     AX = D824h
  6589.     CX = ???
  6590.     DS:SI -> ASCIZ string containing ???
  6591. Return: CF clear if successful
  6592.         AH = 00h
  6593.         CX = ???
  6594.     CF set on error
  6595.         AH = error code
  6596.         87h ??? failed
  6597.         88h ???
  6598. Note:    these functions are only available if ??? from keyboard controller
  6599.       command C0h
  6600. ----------15D825-----------------------------
  6601. INT 15 - Compaq EISA System ROM 04/08/93 - ???
  6602.     AX = D825h
  6603.     CX = ???
  6604.     SI = ???
  6605.     DI = ???
  6606.     ???
  6607. Return: CF clear if successful
  6608.         AH = 00h
  6609.         CX = ???
  6610.     CF set on error
  6611.         AH = error code
  6612.         87h ??? failed
  6613.         88h ???
  6614.             CX = ???
  6615. Note:    these functions are only available if ??? from keyboard controller
  6616.       command C0h
  6617. ----------15D826-----------------------------
  6618. INT 15 - Compaq EISA System ROM 04/08/93 - ???
  6619.     AX = D826h
  6620.     BX = ???
  6621.     CX = size of buffer in bytes
  6622.     DS:SI -> buffer for ???
  6623.     ???
  6624. Return: CF clear if successful
  6625.         AH = 00h
  6626.         CX = ???
  6627.     CF set on error
  6628.         AH = error code
  6629.         87h ??? failed
  6630.         88h ???
  6631. Note:    these functions are only available if ??? from keyboard controller
  6632.       command C0h
  6633. --------X-15D8-------------------------------
  6634. INT 15 - EISA SYSTEM ROM - 32-bit CS ADDRESSING MODE CALLS
  6635.     AH = D8h
  6636.     AL = 80h to 84h
  6637.     other registers as appropriate for AL=00h to 04h
  6638. Return: as appropriate for AL=00h to 04h
  6639. Note:    these functions are identical to AX=D800h to D804h, except that they
  6640.       should be called when using 32-bit CS addressing mode (pointers use
  6641.       ESI rather than SI as offset) instead of 16-bit addressing mode
  6642. SeeAlso: AX=D800h,AX=D801h,AX=D802h,AX=D803h,AX=D804h
  6643. --------b-15D8-------------------------------
  6644. INT 15 - Compaq EISA System ROM 04/08/93 - 32-bit CS ADDRESSING MODE CALLS
  6645.     AH = D8h
  6646.     AL = A0h to A6h
  6647.     other registers as appropriate for AL=20h to 26h
  6648. Return: as appropriate for AL=20h to 26h
  6649. Note:    these functions are identical to AX=D820h to D826h, except that they
  6650.       should be called when using 32-bit CS addressing mode
  6651. ----------15DA-------------------------------
  6652. INT 15 U - AMI PCI BIOS v1.00.05.AX1 - ???
  6653.     AH = DAh
  6654.     AL = function (00h-08h,12h,14h,15h,19h,88h-8Eh,92h,99h)
  6655.     other registers vary by function
  6656. Return: CF clear if successful
  6657.         varies by function
  6658.     CF set on error
  6659.         AH = error code (86h unsupported [sub]function)
  6660. Note:    functions not listed above always return CF set and AH=86h; in the
  6661.       examined BIOS, functions 02h-04h,06h-07h,89h-8Bh, and 8Dh also
  6662.       always return CF set and AH=86h
  6663. SeeAlso: AX=DA00h,AX=DA01h,AX=DA88h,AX=DA99h,AX=DB00h
  6664. --------b-15DA00-----------------------------
  6665. INT 15 U - AMI PCI BIOS - ???
  6666.     AX = DA00h
  6667.     CL = subfunction
  6668.         00h ???
  6669.         01h ???
  6670.         02h get ???
  6671.     ???
  6672. Return: CF clear if successful
  6673.         ???
  6674.     CF set on error
  6675.         AH = error code (86h unsupported subfunction)
  6676. Note:    in the v1.00.05.AX1 BIOS, subfunctions 00h and 01h always return
  6677.       failure
  6678. SeeAlso: AX=DA01h
  6679. --------b-15DA01-----------------------------
  6680. INT 15 U - AMI PCI BIOS - CPU SPEED CONTROL
  6681.     AX = DA01h
  6682.     CL = subfunction (00h-02h)
  6683.         00h set low CPU speed
  6684.         01h set high CPU speed
  6685.         02h get current CPU speed
  6686. Return: CF clear if successful
  6687.         AH = current/new CPU speed (00h low, 01h high)
  6688.         AL = ??? (00h)
  6689.     CF set on error
  6690.         AH = error code (86h unsupported subfunction)
  6691. Notes:    in the v1.00.05.AX1 BIOS, subfunctions 00h and 01h are NOPs in both
  6692.       protected and V86 modes due to a test of MSW bit 0
  6693.     setting the CPU speed also generates the same audible signals generated
  6694.       when manually switching speeds with Ctrl-Alt-Gray- and Ctrl-Alt-Gray+
  6695. BUG:    the BIOS apparently intends to return CF set if ???, but fails to use
  6696.       a different exit path in that case, resulting in CF clear
  6697. ----------15DA05-----------------------------
  6698. INT 15 U - AMI PCI BIOS - GET ??? AND BIOS REVISION STRINGS
  6699.     AX = DA05h
  6700.     ES:SI -> 8-byte buffer for ??? and BIOS revision strings
  6701. Return: CF clear
  6702.     ES:SI buffer filled
  6703.     AL = 00h
  6704.     CX = ??? (0000h)
  6705. Notes:    for BIOS v1.00.05.AX1, the ??? string is "IDNO" and the BIOS revision
  6706.       string is "AX1 "
  6707. SeeAlso: AX=DA15h,AX=DB04h
  6708. ----------15DA08-----------------------------
  6709. INT 15 U - AMI PCI BIOS - ???
  6710.     AX = DA08h
  6711.     ???
  6712. Return: CF clear if successful
  6713.         ???
  6714.     CF set on error
  6715.         AH = error code (86h unsupported subfunction)
  6716. Note:    in the examined v1.00.05.AX1 BIOS, this call always returns failure
  6717. ----------15DA12-----------------------------
  6718. INT 15 U - AMI PCI BIOS - v1.00.05.AX1 - ???
  6719.     AX = DA12h
  6720.     CL = subfunction
  6721.         00h ???
  6722.         01h    ???
  6723.         02h get ???
  6724.         03h ???
  6725.         04h ???
  6726.     ???
  6727. Return: CF clear if successful
  6728.         ???
  6729.     CF set on error
  6730.         AH = error code (86h unsupported subfunction)
  6731. Desc:    ??? performs various manipulations on system chipset registers
  6732. Notes:    subfunctions 00h and 01h are NOPs in protected and V86 modes due to
  6733.       a test of MSW bit 0
  6734.     subfunctions 00h-02h always return success
  6735. ----------15DA14-----------------------------
  6736. INT 15 U - AMI PCI BIOS - GET/SET ???
  6737.     AX = DA14h
  6738.     CL = subfunction
  6739.         00h read
  6740.         01h write
  6741.         DH = new value for ??? (00h-02h)
  6742.     DL = index of ??? (00h-03h, but not range-checked)
  6743.     ???
  6744. Return: CF clear if successful
  6745.         DH = current value of ??? if reading
  6746.     CF set on error
  6747.         AH = error code (86h unsupported subfunction)
  6748. Note:    the values for indexes 00h and 01h are stored in CMOS RAM location 19h,
  6749.       and the values for 02h and 03h are stored in location 36h
  6750. BUG:    the v1.00.05.AX1 BIOS range-checks DH on subfunction 00h instead of
  6751.       subfunction 01h, even though DH is never used by subfunction 00h
  6752. ----------15DA15-----------------------------
  6753. INT 15 U - AMI PCI BIOS - GET ??? AND BIOS REVISION STRINGS
  6754.     AX = DA15h
  6755.     ES:DI -> 8-byte buffer for ??? and BIOS revision strings
  6756. Return: CF clear
  6757.     ES:DI buffer filled
  6758.     AL = 00h
  6759. Note:    for BIOS v1.00.05.AX1, the ??? string is "IDNO" and the BIOS revision
  6760.       string is "AX1 "
  6761. SeeAlso: AX=DA05h,AX=DB04h
  6762. ----------15DA19-----------------------------
  6763. INT 15 U - AMI PCI BIOS - GET/SET ???
  6764.     AX = DA19h
  6765.     CL = subfunction
  6766.         00h get first ???
  6767.         01h get second ???
  6768.         02h set first ???
  6769.         BX = ???
  6770.         DX = ???
  6771.         03h set second ???
  6772.         BX = ???
  6773.         DX = ???
  6774. Return: CF clear if successful
  6775.         AX = 0000h
  6776.         BX,DX = ??? (subfunctions 00h and 01h only)
  6777.     CF set on error
  6778.         AH = error code (86h unsupported subfunction)
  6779. Note:    the first ??? is stored in CMOS RAM locations 1Bh-1Eh, the second in
  6780.       locations 1Fh-22h in the v1.00.05.AX1 BIOS
  6781. --------b-15DA20-----------------------------
  6782. INT 15 U - AMI PCI BIOS v1.00.12.AX1T - CMOS RAM BITFIELD MANIPULATION
  6783.     AX = DA20h
  6784.     BL = subfunction
  6785.         00h set CMOS data field
  6786.         BH = CMOS data field number (00h-4Dh)
  6787.         CH = new value for bitfield (in lowest bits of register)
  6788.         01h read CMOS data field
  6789.         BH = CMOS data field number (00h-4Dh)
  6790.         Return: CH = value of bitfield
  6791.             CL = mask of valid bits
  6792.         Note:    both CL/CH shifted to move valid bits into lowest pos
  6793.         02h set CMOS byte
  6794.         CL = CMOS RAM address (00h-7Fh)
  6795.         CH = new value for CMOS byte
  6796.         03h get CMOS byte
  6797.         CL = CMOS RAM address (00h-7Fh)
  6798.         Return: CH = value of CMOS byte
  6799.         04h update CMOS checksums
  6800.         Note:    sets 2Eh/2Fh to checksum of 10h-2Dh and 7Eh/7Fh to
  6801.               checksum of 48h-7Dh
  6802.         05h verify CMOS checksums
  6803.         Return:    CF clear if checksums OK
  6804.                 AH = 00h
  6805.             CF set if checksum mismatch
  6806.                 AH = 01h
  6807. Return: CF clear if successful
  6808.         AH = 00h
  6809.     CF set on error
  6810.         AH = error code (86h unsupported function/data field)
  6811. Notes:    this function was not supported by the v1.00.05.AX1 BIOS, but had been
  6812.       added by 1.00.12.AX1T
  6813.     after using subfunctions 00h or 02h, the application must call
  6814.       subfunction 04h to update the checksums to prevent an error the next
  6815.       time the system is booted
  6816.  
  6817. (Table 0459)
  6818. Values for AMI BIOS v1.00.12.AX1T CMOS bitfield identifier:
  6819.  ID    address    bit(s)    contents
  6820.  00h    1Ah    7-6
  6821.  01h    1Dh    7-6
  6822.  02h    6Eh    1
  6823.  03h    77h    0
  6824.  04h    77h    1
  6825.  05h    77h    2
  6826.  06h    77h    3
  6827.  07h    77h    5
  6828.  08h    77h    6
  6829.  09h    77h    7
  6830.  0Ah    78h    7    power management enabled???
  6831.  0Bh    78h    6
  6832.  0Ch    10h    7-4    first floppy drive type
  6833.  0Dh    10h    3-0    second floppy drive type
  6834.  0Eh    11h    7
  6835.  0Fh    20h    4-0    selected language for error messages/setup utility
  6836.  10h    11h    2-1
  6837.  11h    11h    4
  6838.  12h    11h    0
  6839.  13h    11h    3
  6840.  14h    13h    7
  6841.  15h    13h    6-5
  6842.  16h    13h    4-2
  6843.  17h    19h    7
  6844.  18h    19h    6
  6845.  19h    19h    5
  6846.  1Ah    19h    4
  6847.  1Bh    1Eh    2-0
  6848.  1Ch    1Bh    7-6
  6849.  1Dh    1Ch    7
  6850.  1Eh    1Ch    3
  6851.  1Fh    1Ah    5-4
  6852.  20h    1Dh    5-4
  6853.  21h    1Bh    5-4
  6854.  22h    1Ch    6
  6855.  23h    1Ch    2
  6856.  24h    1Ah    3-2
  6857.  25h    1Dh    3-2
  6858.  26h    1Bh    3-2
  6859.  27h    1Ch    5
  6860.  28h    1Ch    1
  6861.  29h    1Ah    1-0
  6862.  2Ah    1Dh    1-0
  6863.  2Bh    1Bh    1-0
  6864.  2Ch    1Ch    4
  6865.  2Dh    1Ch    0
  6866.  2Eh    50h    7-0
  6867.  2Fh    51h    7-0
  6868.  30h    52h    7-0
  6869.  31h    53h    7-0
  6870.  32h    60h    0
  6871.  33h    60h    0
  6872.  34h    60h    0
  6873.  35h    60h    0
  6874.  36h    60h    0
  6875.  37h    60h    0
  6876.  38h    60h    1
  6877.  39h    61h    7
  6878.  3Ah    60h    2
  6879.  3Bh    61h    6-4
  6880.  3Ch    61h    2-0
  6881.  3Dh    60h    7-6
  6882.  3Eh    60h    5-4
  6883.  3Fh    78h    5-4
  6884.  40h    6Eh    5
  6885.  41h    1Eh    3
  6886.  42h    6Eh    0
  6887.  43h    6Eh    2
  6888.  44h    6Fh    1-0
  6889.  45h    6Fh    1-0
  6890.  46h    28h    4-2
  6891.  47h    28h    7-5
  6892.  48h    6Eh    4
  6893.  49h    6Eh    3
  6894.  4Ah    76h    7-0
  6895.  4Bh    77h    4
  6896.  4Ch    11h    6
  6897.  4Dh    1Fh    7-0
  6898. ----------15DA88-----------------------------
  6899. INT 15 U - AMI PCI BIOS - GET EXTENDED MEMORY SIZE
  6900.     AX = DA88h
  6901. Return: CF clear (successful)
  6902.     AX = 0000h
  6903.     CL:BX = extended memory size in KBytes
  6904. SeeAlso: AH=88h
  6905. ----------15DA8C-----------------------------
  6906. INT 15 U - AMI PCI BIOS - GET BIOS AND CHIPSET IDENTIFICATION
  6907.     AX = DA8Ch
  6908.     CL = subfunction
  6909.         00h get BIOS version string
  6910.         ES:DI -> 12-byte buffer for version string
  6911.         01h get chipset identification
  6912.         BL = what to retrieve
  6913.             (00h host/PCI bridge,01h motherboard chipset)
  6914.         ES:DI -> 12-byte buffer for chipset identification (see #0460)
  6915. Return: CF clear if successful
  6916.         ES:DI buffer filled
  6917.     CF set on error
  6918.         AH = error code (86h unsupported subfunction)
  6919. Notes:    the v1.00.05.AX1 BIOS returns "1.00.05.AX1 " as its version string
  6920.     subfunction 01h returns the five bytes read from the PCI configuration
  6921.       registers 00h-05h (see #0790), padded to 12 bytes with NULs
  6922. SeeAlso: AX=DB04h,PORT C000h"Neptune"
  6923.  
  6924. Format of AMI PCI BIOS chipset identification:
  6925. Offset    Size    Description    (Table 0460)
  6926.  00h    WORD    vendor ID (see #0649 at AX=B102h)
  6927.         8086h = Intel
  6928.  02h    WORD    device ID
  6929.         0484h (BL=01h)
  6930.         04A3h (BL=00h)
  6931.  04h    BYTE    low byte of PCI Command Register
  6932.  05h  7 BYTEs    unused (00h)
  6933. ----------15DA8E-----------------------------
  6934. INT 15 U - AMI PCI BIOS - ???
  6935.     AX = DA8Eh
  6936.     ???
  6937. Return: CF clear if successful
  6938.         ???
  6939.     CF set on error
  6940.         AH = error code (86h unsupported subfunction)
  6941. Note:    in the    v1.00.05.AX1 BIOS, this call always returns failure
  6942. ----------15DA92-----------------------------
  6943. INT 15 U - AMI PCI BIOS - GET CPU TYPE AND SPEED
  6944.     AX = DA92h
  6945. Return: CF clear (successful)
  6946.     AL = CPU stepping (see also #0446 at INT 15/AH=C9h)
  6947.     AH = CPU model
  6948.     BL = CPU family (05h = Pentium, etc.)
  6949.     CX = external clock speed in MHz (BCD)
  6950.         (0040h,0050h,0060h,0066h are possible return values on my
  6951.           Pentium with the Intel "Neptune" chipset)
  6952.     EAX high word destroyed
  6953. Note:    90 MHz and faster Pentium CPUs can be configured to run at varying
  6954.       multiples of the external clock speed, i.e. a typical 90 MHz Pentium
  6955.       system will run the motherboard at 60 MHz (my 90 MHz Pentium returns
  6956.       0060h in CX)
  6957. SeeAlso: AH=C9h
  6958. ----------15DA99-----------------------------
  6959. INT 15 U - AMI PCI BIOS - GET/SET ??? FLAG
  6960.     AX = DA99h
  6961.     CL = subfunction
  6962.         00h check if ???
  6963.         01h set ??? flag
  6964.         02h clear ??? flag
  6965. Return: CF clear if successful
  6966.         AH = ??? (00h,01h)
  6967.         AL = 00h
  6968.     CF set on error
  6969.         AH = error code (86h unsupported subfunction)
  6970. Note:    the flag is stored in bit 0 of CMOS RAM location 2Ch for BIOS
  6971.       v1.00.05.AX1
  6972. --------b-15DB00-----------------------------
  6973. INT 15 U - AMI BIOS - Flash ROM - READ FLASH BIOS
  6974.     AX = DB00h
  6975.     DS:SI -> parameter block (see #0461)
  6976.     ES:DI -> buffer for copied information
  6977. Return: CF clear if successful
  6978.     CF set on error
  6979.         AH = status (86h if not implemented)
  6980.     DS,ES destroyed, possibly other registers
  6981. Note:    used by FMUP.EXE, Intel's Flash Memory Update utility
  6982. SeeAlso: AH=DAh,AX=DB01h,AX=DB04h
  6983.  
  6984. Format of AMI BIOS Flash ROM parameter block:
  6985. Offset    Size    Description    (Table 0461)
  6986.  00h 32 BYTEs    ASCIZ description of the file's contents
  6987.  20h    BYTE    Logical area type (see #0462)
  6988.  21h    DWORD    logical area size (overall size of area)
  6989.  25h    BYTE    flag: load from file (FF=yes, 00=no)
  6990.  26h    BYTE    flag: reboot after update (FF=yes, 00=no)
  6991.  27h    BYTE    flag: update entire image (FF=yes, 00=no)
  6992.  28h 24    BYTEs    ASCIZ logical area name (cooresponds to offset 20)
  6993.         "System BIOS"
  6994.         "Logo Data Area", etc.
  6995.  40h 15 BYTEs    ASCIZ time stamp string: MM/DD/YY-HH:MM
  6996.  4Fh    BYTE    checksum for this header (sum of all bytes except this one)
  6997.         if checksum would be 00h,01h, or FFh, it is set to 2Ah
  6998.  50h    DWORD    this file's starting address (offset in image)
  6999.  54h    DWORD    size of image chunk in this file
  7000.  58h    BYTE    logical area type - same as offset 20h
  7001.  59h    BYTE    flag: last file in chain (FF=yes, 00=no)
  7002.  5Ah  6 BYTEs    ASCIZ signature "FLASH"
  7003.  60h 16 BYTEs    ASCIZ filename of next file in chain
  7004.  70h 16 BYTEs    ASCIZ BIOS reserved string (usually version #)
  7005. Notes:    this block is identical in format to the 128-byte header on an AMI
  7006.       BIOS Update file
  7007.     for AX=DB00h, the following fields must be specified: 50h,54h,58h;
  7008.       the fields at offset 20h and 5Ah should also be set if possible
  7009.     the fields at offsets 40h and 70h will be set on return, if available
  7010. SeeAlso: #0463
  7011. --------b-15DB01-----------------------------
  7012. INT 15 U - AMI BIOS - Flash ROM - GET BIOS SUBSYSTEM INFORMATION
  7013.     AX = DB01h
  7014.     CL = BIOS subsystem information identifier (see #0462)
  7015. Return: CF clear if successful
  7016.         AX = 0000h
  7017.         ES:DI -> 56-byte record describing subsystem (see #0463)
  7018.     CF set on error
  7019.         AH = status
  7020.         01h nonexistent subsystem
  7021.         86h function not supported
  7022.         AL = 00h
  7023. Note:    used by FMUP.EXE, Intel's Flash Memory Update utility
  7024. SeeAlso: AX=DB00h,AX=DB02h
  7025.  
  7026. (Table 0462)
  7027. Values for AMI BIOS subsystem identifier:
  7028.  00h    recovery code
  7029.  01h    system BIOS
  7030.  02h    PCI configuration data
  7031.  03h    OEM logo data area (see #0464)
  7032.  04h    system BIOS/Language Set (one system)
  7033.     configuration utility (another system)
  7034. SeeAlso: #0463
  7035.  
  7036. Format of AMI BIOS subsystem information:
  7037. Offset    Size    Description    (Table 0463)
  7038.  00h    BYTE    subsystem identifier/logical area type (see #0462)
  7039.  01h    DWORD    subsystem (FlashROM page) size in bytes
  7040.  05h    BYTE    flag: loadable from file (FFh=yes)
  7041.  06h    BYTE    flag: reboot after update (FFh=yes)
  7042.  07h    BYTE    flag: update entire image (FFh=yes)
  7043.  08h 24 BYTEs    subsystem/logical area name
  7044.  20h    BYTE    subsystem identifier???
  7045.  21h    BYTE    flag: reprogrammable if FFh
  7046.  22h    BYTE    ??? (01h,02h seen)
  7047.  23h  5 BYTEs    ??? (apparently always 00h)
  7048.  28h 16 BYTEs    BIOS reserved string (usually version number)
  7049. SeeAlso: #0461
  7050.  
  7051. Format of AMI OEM Logo data area:
  7052. Offset    Size    Description    (Table 0464)
  7053.  00h  8 BYTEs    signature
  7054.         "TEXTLOGO" if text-mode OEM logo
  7055.         8 DUP (FFh) if unused
  7056.  08h    WORD    offset of logo font definition table
  7057.  0Ah    WORD    offset of logo data
  7058.  0Ch    WORD    size of logo font table in words
  7059.  0Eh    WORD    offset of upper left corner of logo in video page
  7060.  10h    WORD    width of logo
  7061.  12h    WORD    height of logo
  7062.  14h    BYTE    reserved???
  7063.  var    var    logo font definition (16 bytes per character)
  7064.  var    var    logo data as character/attribute pairs
  7065. Note:    the attribute for the logo characters specifies which font will be used
  7066.       for that character.  If bit 3 is cleared, the normal system font is
  7067.       used; if bit 3 is set, the logo font is used, with screen colors
  7068.       adjusted to match the corresponding non-bright attribute for the
  7069.       system font
  7070. SeeAlso: #0462,#0463
  7071. --------b-15DB02-----------------------------
  7072. INT 15 U - AMI BIOS - Flash ROM - GET SIZE OF FLASH ROM PROGRAMMING CODE
  7073.     AX = DB02h
  7074. Return: CF clear
  7075.     AX = 0000h
  7076.     BX = size of ROM programming code in bytes
  7077. Note:    used by FMUP.EXE, Intel's Flash Memory Update utility
  7078. SeeAlso: AX=DB00h,AX=DB03h
  7079. --------b-15DB03-----------------------------
  7080. INT 15 U - AMI BIOS - Flash ROM - GET FLASH ROM PROGRAMMING CODE
  7081.     AX = DB03h
  7082.     DS:SI -> ???
  7083.     ES:DI -> buffer for Flash ROM programming code
  7084.     BX = ???
  7085.     DX = ???
  7086. Return: CF clear if successful
  7087.         AH = ???
  7088.         BX = ???
  7089.         DX = ???
  7090.     CF set on error
  7091.         AH = error code
  7092. Notes:    the entry point for the copied code (which is fully relocatable) is
  7093.       the very first byte (see #0465)
  7094.     used by FMUP.EXE, Intel's Flash Memory Update utility
  7095. SeeAlso: AX=DB00h,AX=DB02h
  7096.  
  7097. (Table 0465)
  7098. Call AMI BIOS ??? code with:
  7099.     AL = function
  7100.         00h erase Flash ROM block
  7101.         CX = ???
  7102.             bit 8: address line A16 inverted
  7103.         ???
  7104.         01h program new data into Flash ROM
  7105.         ???
  7106.         02h perform cold reboot
  7107.     DS:SI -> ??? (see #0466)
  7108.     ES:DI -> ???
  7109. Return: AH = status
  7110.         00h successful
  7111.         01h invalid function
  7112.         02h ???
  7113.         03h ???
  7114.         04h ???
  7115. Note:    DS:SI and ES:DI are ignored for function 02h
  7116.  
  7117. Format of AMI BIOS Flash ROM programming parameters:
  7118. Offset    Size    Description    (Table 0466)
  7119.  00h 32 BYTEs    ???
  7120.  20h    BYTE    BIOS section number
  7121.  21h    DWORD    length of BIOS code/data in bytes
  7122.  25h 43 BYTEs    ???
  7123.  50h    DWORD    ???
  7124.  54h 44 BYTEs    ???
  7125. SeeAlso: #0465
  7126. --------b-15DB04-----------------------------
  7127. INT 15 U - AMI BIOS - Flash ROM - GET BIOS REVISION
  7128.     AX = DB04h
  7129. Return: CF clear if supported
  7130.         BL:BH:DL:DH = BIOS revision string
  7131.         (e.g. 'AX1 ' for v1.00.05.AX1, 'AV0M' for v1.00.03.AV0M)
  7132.         CL = flag: DH valid?
  7133.         00h ignore DH; ignore DL as well if 20h (space)
  7134.         01h ignore DH if 20h (space)
  7135.         CH = BIOS status
  7136.         00h normal mode
  7137.         01h ROM recovery mode
  7138.         AL = ??? (02h)
  7139. Note:    used by FMUP.EXE, Intel's Flash Memory Update utility
  7140. SeeAlso: AX=DA05h,AX=DA15h,AX=DA8Ch,AX=DB00h,AX=DB03h
  7141. --------Q-15DE00-----------------------------
  7142. INT 15 - DESQview - GET PROGRAM NAME
  7143.     AX = DE00h
  7144. Return: AX = offset into DESQVIEW.DVO of program most recently selected from
  7145.           the "Switch Windows" menu (see #0467)
  7146. Note:    always returns AX=0000h under DESQview/X
  7147. SeeAlso: AX=DE07h
  7148.  
  7149. Format of program entry in DESQVIEW.DVO:
  7150. Offset    Size    Description    (Table 0467)
  7151.  00h    BYTE    length of name (FFh if end of file)
  7152.  01h  N BYTEs    name
  7153.       2 BYTEs    keys to invoke program (second = 00h if only one key used)
  7154.     BYTE    program type
  7155.         00h normal program
  7156.         04h divider
  7157.         80h Delete a Program
  7158.         81h Change a Program
  7159.     WORD    ??? apparently always 0000h
  7160. --------Q-15DE01-----------------------------
  7161. INT 15 - DESQview - UPDATE "OPEN WINDOW" MENU
  7162.     AX = DE01h
  7163. Return: nothing
  7164. Notes:    reads DESQVIEW.DVO, disables Open menu if file not in current directory
  7165.     NOP for DESQview/X
  7166. --------Q-15DE02-----------------------------
  7167. INT 15 - DESQview 1.x only - SET ??? FLAG FOR CURRENT WINDOW
  7168.     AX = DE02h
  7169. Return: nothing
  7170. Note:    this call is a NOP in DV 2.x
  7171. SeeAlso: AX=DE03h
  7172. --------Q-15DE03-----------------------------
  7173. INT 15 - DESQview 1.x only - GET ??? FOR CURRENT WINDOW
  7174.     AX = DE03h
  7175. Return: AX = ??? for current window
  7176.     BX = ??? for current window
  7177. Note:    this call is a NOP in DV 2.x
  7178. SeeAlso: AX=DE02h
  7179. --------Q-15DE04-----------------------------
  7180. INT 15 - DESQview - GET AVAILABLE COMMON MEMORY
  7181.     AX = DE04h
  7182. Return: BX = bytes of common memory available
  7183.     CX = largest block available
  7184.     DX = total common memory in bytes
  7185. SeeAlso: AX=DE05h,AX=DE06h
  7186. --------Q-15DE05-----------------------------
  7187. INT 15 - DESQview - GET AVAILABLE CONVENTIONAL MEMORY
  7188.     AX = DE05h
  7189. Return: BX = KB of memory available
  7190.     CX = largest block available
  7191.     DX = total conventional memory in KB
  7192. SeeAlso: AX=DE04h,AX=DE06h
  7193. --------Q-15DE06-----------------------------
  7194. INT 15 - DESQview - GET AVAILABLE EXPANDED MEMORY
  7195.     AX = DE06h
  7196. Return: BX = KB of expanded memory available
  7197.     CX = largest block available
  7198.     DX = total expanded memory in KB
  7199. SeeAlso: AX=DE04h,AX=DE05h
  7200. --------Q-15DE07-----------------------------
  7201. INT 15 - DESQview - "APPNUM" - GET CURRENT PROGRAM'S NUMBER
  7202.     AX = DE07h
  7203. Return: AX = number of program as it appears on the "Switch Windows" menu
  7204. Note:    this API call may be made from a hardware interrupt handler
  7205. SeeAlso: AX=DE00h
  7206. --------Q-15DE08-----------------------------
  7207. INT 15 - DESQview - GET ???
  7208.     AX = DE08h
  7209. Return: AX = 0000h if ??? is not set to the current task
  7210.          0001h if ??? is set to the current task
  7211. --------Q-15DE09-----------------------------
  7212. INT 15 - DESQview - UNIMPLEMENTED
  7213.     AX = DE09h
  7214. Return: nothing (NOP in DV 1.x and 2.x)
  7215. --------Q-15DE0A-----------------------------
  7216. INT 15 - DESQview v2.00+ - "DBGPOKE" - DISPLAY CHARACTER ON STATUS LINE
  7217.     AX = DE0Ah
  7218.     BL = character
  7219. Return: character displayed, next call will display in next position (which
  7220.     wraps back to the start of the line if off the right edge of screen)
  7221. Notes:    displays character on bottom line of *physical* screen, regardless
  7222.       of current size of window (even entirely hidden)
  7223.     does not know about graphics display modes, just pokes the characters
  7224.       into display memory
  7225.     this API call may be made from a hardware interrupt handler
  7226. SeeAlso: AX=1003h
  7227. --------Q-15DE0B-----------------------------
  7228. INT 15 - DESQview v2.00+ - "APILEVEL" - DEFINE MINIMUM API LEVEL REQUIRED
  7229.     AX = DE0Bh
  7230.     BL = API level minor version number
  7231.     BH = API level major version number
  7232. Return: AX = maximum API level (AH = major, AL = minor)
  7233. Notes:    if the requested API level is greater than the version of DESQview, a
  7234.       "You need a newer version" error window is popped up
  7235.     the API level defaults to 1.00, and is inherited by child tasks
  7236. --------Q-15DE0C-----------------------------
  7237. INT 15 - DESQview v2.00+ - "GETMEM" - ALLOCATE "SYSTEM" MEMORY
  7238.     AX = DE0Ch
  7239.     BX = number of bytes
  7240. Return: ES:DI -> allocated block or 0000h:0000h (DV 2.26+)
  7241. Note:    use SETERROR (AX=DE15h) to avoid a user prompt if there is insufficient
  7242.       system memory
  7243. SeeAlso: AX=1001h,AX=102Eh,AX=DE0Dh,AX=DE15h,AX=DE19h
  7244. --------Q-15DE0D-----------------------------
  7245. INT 15 - DESQview v2.00+ - "PUTMEM" - DEALLOCATE "SYSTEM" MEMORY
  7246.     AX = DE0Dh
  7247.     ES:DI -> previously allocated block
  7248. Return: nothing
  7249. SeeAlso: AX=1002h,AX=DE0Ch
  7250. --------Q-15DE0E-----------------------------
  7251. INT 15 - DESQview v2.00+ - "FINDMAIL" - FIND MAILBOX BY NAME
  7252.     AX = DE0Eh
  7253.     ES:DI -> name to find (see #0468)
  7254.     CX = length of name
  7255. Return: BX = 0000h not found
  7256.          0001h found
  7257.         DS:SI = object handle
  7258. SeeAlso: AH=12h/BH=11h,AH=12h/BH=12h"GETNAME"
  7259.  
  7260. (Table 0468)
  7261. Values for special DESQview mailbox names:
  7262.  "COM1" ... "COM4"    RBcomm using COM1 ... COM4
  7263.  "DESQview/X Help Engine"
  7264.  "DESQview/X Network Server"  Network Manager
  7265.  "DESQview X Server0"    X-Windows server
  7266.  "DESQview X Server7"    X-Windows printing service
  7267.  "INBOX"        DESQview/X LPD requests
  7268.  "OUTBOX"        DESQview/X LPD responses
  7269.  "WAITBOX"        semaphore to synchronize DESQview/X LPD communications
  7270.  "_DVNM_"        DV/X v1.10 network manager
  7271. --------Q-15DE0F-----------------------------
  7272. INT 15 - DESQview v2.00+ - ENABLE DESQview EXTENSIONS
  7273.     AX = DE0Fh
  7274. Return: AX and BX destroyed (seems to be bug, weren't saved&restored)
  7275. Notes:    sends a manager stream with opcodes AEh, BDh, and BFh to task's window
  7276.     enables an additional mouse mode
  7277. --------Q-15DE10-----------------------------
  7278. INT 15 - DESQview v2.00+ - "PUSHKEY" - PUT KEY INTO KEYBOARD INPUT STREAM
  7279.     AX = DE10h
  7280.     BH = scan code
  7281.     BL = character
  7282. Return: nothing
  7283. Notes:    a later read will get the keystroke as if it had been typed by the user
  7284.     multiple pushes are read last-in first-out
  7285.     if a script exists for the pushed key in the current application, the
  7286.       script will be executed
  7287.     early copies of DV 2.00 destroy AX, BX, ES, and DI
  7288. SeeAlso: INT 16/AH=05h
  7289. --------Q-15DE11BL00-------------------------
  7290. INT 15 - DESQview v2.00+ - "JUSTIFY" - EN/DISABLE AUTOM. WINDOW JUSTIFICATION
  7291.     AX = DE11h
  7292.     BL = 00h      viewport will not move automatically
  7293.          nonzero  viewport will move to keep cursor visible (default)
  7294. Return: nothing
  7295. --------Q-15DE12BX0000-----------------------
  7296. INT 15 - DESQview v2.01+ - "CSTYLE" - SET "C"-COMPATIBLE CONTROL CHAR INTERPRET
  7297.     AX = DE12h
  7298.     BX = 0000h    select normal style (linefeed only moves down)
  7299.          nonzero  select C style (linefeed moves to start of next line)
  7300. Return: nothing
  7301. Note:    set on a per-task basis, and inherited from the parent task
  7302. --------Q-15DE13-----------------------------
  7303. INT 15 - DESQview v2.20+ - "GETCRIT" - GET CRITICAL NESTING COUNT
  7304.     AX = DE13h
  7305. Return: BX = number of calls to BEGINC or ENTERC
  7306.           (see INT 15/AX=101Bh,INT 15/AX=DE1Ch) without matching ENDC
  7307.           (see INT 15/AX=101Ch)
  7308. Note:    this API call may be made from within a hardware interrupt handler
  7309. SeeAlso: AX=101Bh,AX=101Ch,AX=DE1Bh,AX=DE1Ch
  7310. --------Q-15DE14-----------------------------
  7311. INT 15 - DESQview v2.20+ - GET OBJECT TYPE
  7312.     AX = DE14h
  7313.     ES:DI -> object
  7314. Return: BL = 00h not an object
  7315.          08h window or task
  7316.          09h mailbox
  7317.          0Ah keyboard
  7318.          0Bh timer
  7319.          0Ch objectq
  7320.          0Fh pointer
  7321.          10h panel
  7322. SeeAlso: AX=1016h
  7323. --------Q-15DE15-----------------------------
  7324. INT 15 - DESQview v2.20+ - SET ERROR HANDLING
  7325.     AX = DE15h
  7326.     BL = error handling mode
  7327.         00h post system error on all error conditions
  7328.         01h return carry flag set on calls to ADDTO, SUBFROM, and WRITE
  7329.         messages sent to mailboxes which fail due to lack of system
  7330.         or common memory
  7331.         02h (v2.26+) same as 01h, but also return null pointer for GETMEM
  7332.         calls which fail due to lack of system memory
  7333. Return: nothing
  7334. SeeAlso: AX=DE0Ch,AX=DE16h
  7335. --------Q-15DE16-----------------------------
  7336. INT 15 - DESQview v2.20+ - GET ERROR HANDLING
  7337.     AX = DE16h
  7338. Return: BL = current mode
  7339.         00h always post system error
  7340.         01h return carry flag set on failed mailbox writes
  7341.         02h return CF set on failed mailbox writes and NULL on failed
  7342.         GETMEM calls
  7343. SeeAlso: AX=DE15h
  7344. --------Q-15DE17-----------------------------
  7345. INT 15 - DESQview v2.20-2.25 - reserved
  7346.     AX = DE17h
  7347. Return: pops up "Programming error" window
  7348. Note:    AX = 1117h is NOT identical to this call under DESQview 2.20 thru 2.25
  7349. SeeAlso: AX=1117h
  7350. --------Q-15DE17-----------------------------
  7351. INT 15 - DESQview v2.26+ - "ASSERTMAP" - GET/SET MAPPING CONTEXT
  7352.     AX = DE17h
  7353.     BX = function
  7354.         0000h   get current mapping context without setting
  7355.         nonzero set new mapping context to BX
  7356. Return: BX = mapping context in effect before call
  7357. Notes:    mapping contexts determine conventional-memory addressability; setting
  7358.       a mapping context ensures that the associated program and data areas
  7359.       are in memory for access.  Usable by drivers, TSRs and shared
  7360.       programs.
  7361.     caller need not be running under DESQview
  7362.     this API call may be made from a hardware interrupt handler
  7363. SeeAlso: AX=1016h,AX=1117h,AX=DE21h,INT 2F/AX=1685h
  7364. --------Q-15DE18-----------------------------
  7365. INT 15 - DESQview v2.20+ - internal - ???
  7366.     AX = DE18h
  7367.     BP = function number
  7368.         high byte must be 10h
  7369.         low byte is function
  7370.         00h set ???
  7371.             BL = ???  (00h-10h, video mode???)
  7372.             BH = value to store
  7373.         03h set ???
  7374.             BL = ??? (stored in driver)
  7375.         0Ah get ???
  7376.             ES:DI -> 18-byte buffer to hold ???
  7377. Note:    calls video driver (NOP for Hercules driver,probably CGA and MCGA also)
  7378. --------Q-15DE19-----------------------------
  7379. INT 15 - DESQview v2.23+ - "GETCOMMON" - ALLOCATE "COMMON" MEMORY
  7380.     AX = DE19h
  7381.     BX = number of bytes to allocate
  7382. Return: AX = 0000h successful
  7383.         ES:DI -> allocated block
  7384.          nonzero insufficient memory
  7385. Note:    this API call may be made from within a hardware interrupt handler
  7386. SeeAlso: AX=DE0Ch,AX=DE15h,AX=DE1Ah
  7387. --------Q-15DE1A-----------------------------
  7388. INT 15 - DESQview v2.23+ - "PUTCOMMON" - DEALLOCATE "COMMON" MEMORY
  7389.     AX = DE1Ah
  7390.     ES:DI -> previously allocated block
  7391. Return: AX = 0000h (successful)
  7392. Note:    this function may be called from within a hardware interrupt handler
  7393. SeeAlso: AX=DE0Dh,AX=DE19h
  7394. --------Q-15DE1B-----------------------------
  7395. INT 15 - DESQview v2.23+ internal - DECREMENT CRITICAL NESTING COUNT
  7396.     AX = DE1Bh
  7397. Return: nothing
  7398. SeeAlso: AX=101Ch,AX=DE13h,AX=DE1Ch
  7399. --------Q-15DE1C-----------------------------
  7400. INT 15 - DESQview v2.23+ - "ENTERC" - INCREMENT CRITICAL NESTING COUNT
  7401.     AX = DE1Ch
  7402. Return: nothing
  7403. Notes:    similar to AX=101Bh, but begins the critical region without ensuring
  7404.       that DOS is free
  7405.     the official documentation states that this call should be paired with
  7406.       "ENDC" (AX=101Ch); no mention is made of AX=DE1Bh
  7407.     this API call may be made from within a hardware interrupt handler
  7408. SeeAlso: AX=101Bh,AX=101Ch,AX=DE13h,AX=DE1Bh
  7409. --------Q-15DE1D-----------------------------
  7410. INT 15 - DESQview v2.23+ - "PUTKEY" - FAKE USER KEYSTROKES
  7411.     AX = DE1Dh
  7412.     DX = segment of handle for task to receive keystroke
  7413.     BL = character
  7414.     BH = scan code
  7415. Return: AX = 0000h if successful
  7416.        nonzero if receiver's keyboard buffer was full
  7417. Notes:    the key is treated as though the user had pressed it, ignoring any
  7418.       script which may be bound to the key, and using the current field
  7419.       table if the keyboard object is in field processing mode
  7420.     multiple PUTKEYs are seen in the order in which they are executed
  7421. SeeAlso: AX=DE10h
  7422. --------Q-15DE1E-----------------------------
  7423. INT 15 - DESQview v2.23+ - "SCRNINFO" - GET TRUE VIDEO PARAMETERS
  7424.     AX = DE1Eh
  7425. Return: CL = actual number of rows on screen
  7426.     CH = actual number of columns on screen
  7427.     BL = actual video mode (may differ from INT 10/AH=0Fh return) (v2.26+)
  7428. Note:    this API call may be made from a hardware interrupt handler
  7429. SeeAlso: INT 10/AH=0Fh
  7430. --------Q-15DE1F-----------------------------
  7431. INT 15 - DESQview v2.23+ - "DOSUSER" - GET HANDLE OF TASK CURRENTLY USING DOS
  7432.     AX = DE1Fh
  7433. Return: BX = segment of task handle or 0000h if no tasks are using DOS
  7434. Note:    this API call may be made from within a hardware interrupt handler
  7435. SeeAlso: AX=DE13h,INT 21/AH=34h
  7436. --------Q-15DE20-----------------------------
  7437. INT 15 - DESQview v2.26+ - "DISPATCHINT" - INTERRUPT ANOTHER TASK
  7438.     AX = DE20h
  7439.     BX = segment of handle of task to interupt
  7440.     DX:CX -> FAR interrupt routine
  7441.     BP,SI,DI,DS,ES as required by interrupt routine
  7442. Return: nothing
  7443. Notes:    unlike "PGMINT" (AX=1021h), DISPATCHINT may be applied to the task
  7444.       making the DISPATCHINT call
  7445.     multiple "DISPATCHINT" calls are processed in the order in which they
  7446.       were executed
  7447.     the FAR routine is entered with the current ES, DS, SI, DI, and BP
  7448.       values, using the task's internal stack (see AX=101Ah); only SS:SP
  7449.       needs to be preserved
  7450.     this API call may be made from within a hardware interrupt handler
  7451. SeeAlso: AX=1021h,AX=DE2Ah
  7452. --------Q-15DE21-----------------------------
  7453. INT 15 - DESQview v2.26+ - "ASSERTVIR" - CONTROL 386 SCREEN VIRTUALIZATION
  7454.     AX = DE21h
  7455.     BX = new state
  7456.         0000h turn off
  7457.         nonzero turn on
  7458. Return: BX = old state of virtualization
  7459. Notes:    this API call may be made from within a hardware interrupt handler
  7460.     under DV 2.40 and 2.42, this call appears to have no effect and always
  7461.       returns a nonzero value in BX which appears to be the offset within
  7462.       the DV common memory segment of the caller's task object; it may
  7463.       only have an effect within a hardware interrupt handler
  7464. SeeAlso: AX=1117h,AX=DE17h
  7465. --------Q-15DE22-----------------------------
  7466. INT 15 - DESQview v2.26+ - "PROCESSMEM" - GET TASK MEMORY STATUS
  7467.     AX = DE22h
  7468.     DX = segment of task handle
  7469. Return: DX = total amount of memory in paragraphs
  7470.     BX = amount of system memory in paragraphs
  7471.     CX = largest block of system memory available in paragraphs
  7472.     AX = memory flags (see #0469)
  7473. Notes:    if the task handle is a child task, the returned values will be for the
  7474.       process containing the task, rather than the task itself
  7475.     if the process's system memory is swapped out, BX,CX,DX remain
  7476.       unchanged, because the memory usage cannot be determined
  7477. SeeAlso: AX=DE04h,AX=DE05h,AX=DE06h
  7478.  
  7479. Bitfields for DESQview process memory flags:
  7480. Bit(s)    Description    (Table 0469)
  7481.  0    system memory resides in shared memory
  7482.  1    process's memory is swapped out
  7483.  2    process's system memory is swapped out
  7484. --------Q-15DE23-----------------------------
  7485. INT 15 U - DESQview v2.31+ - ???
  7486.     AX = DE23h
  7487.     BX = ??? IRQ number on first PIC?
  7488.     CX = ??? IRQ number on second PIC?
  7489. Return: ???
  7490. Note:    called by QEMM 6.00+
  7491. --------Q-15DE24-----------------------------
  7492. INT 15 - DESQview v2.40+ - "XNEWPROC" - START NEW APPLICATION
  7493.     AX = DE24h
  7494.     BX = length of .DVP data
  7495.     CX = length of ??? string
  7496.     DS:SI -> ??? string
  7497.     ES:DI -> .DVP data (see #0346 at AX=102Ch)
  7498. Return: BX = segment of task handle??? or 0000h on error
  7499. Note:    this call is similar to AX=102Ch except that it can interpret the
  7500.       extended DVP data
  7501. SeeAlso: AX=102Ch
  7502. --------Q-15DE25-----------------------------
  7503. INT 15 - DESQview v2.40+ - "GETDVPATH" - GET DESQview DIRECTORY
  7504.     AX = DE25h
  7505.     ES:DI -> 67-byte buffer for ASCIZ directory name
  7506. Return: ES:DI buffer filled with directory from which DESQview was started
  7507. BUG:    DV 2.42 does not place a terminating NUL at the end of the directory
  7508.       name, so if the buffer is not cleared to zeros before the call,
  7509.       there is no way to tell where the directory name ends.  This bug
  7510.       has been fixed in DV 2.52 (DV/X 1.02)
  7511. SeeAlso: AX=DE2Eh,INT 21/AH=47h
  7512. --------Q-15DE26-----------------------------
  7513. INT 15 - DESQview v2.40+ - "GETFOREGROUND" - GET KEYBOARD FOCUS
  7514.     AX = DE26h
  7515. Return: BX = segment of handle for task with keyboard focus
  7516. Note:    under DESQview/X, the X server always has the keyboard focus unless a
  7517.       "direct" window is active
  7518. SeeAlso: AX=DE2Fh,INT 2F/AX=DE0Ah
  7519. --------Q-15DE27-----------------------------
  7520. INT 15 - DESQview v2.50+ - "ADDINSTANCEDATA" - ADD PER-TASK SAVE/RESTORE AREA
  7521.     AX = DE27h
  7522.     BX = type
  7523.         0000h process
  7524.         0001h task
  7525.     ES:DI -> list of Instance Item Structures (see #0470)
  7526. Return: CF clear if successful
  7527.         AX = ???
  7528.         BX = ???
  7529.     CF set on error
  7530.         AX = error code???
  7531.         0004h invalid BX value
  7532. Note:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  7533. SeeAlso: INT 2F/AX=DE08h,INT 2F/AX=DE09h
  7534.  
  7535. Format of DESQview Instance Item Structure [one element of list]:
  7536. Offset    Size    Description    (Table 0470)
  7537.  00h    WORD    length of data area DESQview should save and restore on context
  7538.           switches (0000h = end of list)
  7539.  02h    DWORD    pointer to area to be saved/restored
  7540. --------Q-15DE28-----------------------------
  7541. INT 15 U - DESQview v2.50+ - ???
  7542.     AX = DE28h
  7543.     BX = segment of ??? or 0000h for default
  7544.     ???
  7545. Return: ???
  7546. Note:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  7547. SeeAlso: AX=DE2Ah
  7548. --------Q-15DE29BX0000-----------------------
  7549. INT 15 U - DESQview/X - ???
  7550.     AX = DE29h
  7551.     BX = 0000h
  7552.     ???
  7553. Return: CF clear if successful
  7554.         ???
  7555.     CF set on error
  7556. Notes:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  7557.     under DESQview 2.60, this function and all other subfunctions of
  7558.       AX=DE29h always return CF set, as they are unique to DESQview/X
  7559. --------Q-15DE29BX0001-----------------------
  7560. INT 15 U - DESQview/X - ???
  7561.     AX = DE29h
  7562.     BX = 0001h
  7563.     DX = segment of window handle
  7564. Return: CF clear if successful
  7565.         AX = ???
  7566.         DX = ???
  7567.     CF set on error
  7568. Note:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  7569. --------Q-15DE29BX0002-----------------------
  7570. INT 15 U - DESQview/X - ???
  7571.     AX = DE29h
  7572.     BX = 0002h
  7573.     DX = segment of window handle
  7574. Return: CF clear if successful
  7575.         AX = ???
  7576.         DX = ???
  7577.     CF set on error
  7578. Note:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  7579. --------Q-15DE29BX0003-----------------------
  7580. INT 15 U - DESQview/X - ???
  7581.     AX = DE29h
  7582.     BX = 0003h
  7583.     DX = segment of window handle
  7584. Return: CF clear if successful
  7585.         ???
  7586.     CF set on error
  7587. Note:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  7588. --------Q-15DE29BX0004-----------------------
  7589. INT 15 U - DESQview/X - GET DISPLAY NAME
  7590.     AX = DE29h
  7591.     BX = 0004h
  7592.     CX = size of buffer in bytes
  7593.     DX = segment of window handle
  7594.     ES:DI -> buffer for display name
  7595. Return: CF clear if successful
  7596.         buffer filled with ASCIZ display name (truncated if necessary) or
  7597.           null string if no display
  7598.     CF set on error
  7599. Notes:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  7600.     the name ":0" refers to the local display
  7601. --------Q-15DE29BX0005-----------------------
  7602. INT 15 U - DESQview/X - ???
  7603.     AX = DE29h
  7604.     BX = 0005h
  7605.     ???
  7606. Return: CF clear if successful
  7607.         ???
  7608.     CF set on error
  7609. Note:    under DESQview 2.60, this function and all other subfunctions of
  7610.       AX=DE29h always return CF set, as they are unique to DESQview/X
  7611. --------Q-15DE2A-----------------------------
  7612. INT 15 - DESQview v2.50+ - "DISPATCHINTAFTERDOS" - INTERRUPT ANOTHER TASK
  7613.     AX = DE2Ah
  7614.     BX = segment of handle for task to interrupt or 0000h for caller
  7615.     DX:CX -> interrupt routine
  7616.     BP,SI,DI,DS,ES as required by interrupt routine
  7617. Return: nothing
  7618. Notes:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  7619.     this call is the same as AX=DE20h except that it will delay
  7620.       interrupting the specified task until after it has exited DOS
  7621. SeeAlso: AX=1021h,AX=DE20h
  7622. --------Q-15DE2B-----------------------------
  7623. INT 15 - DESQview v2.50+ - "OBJNEXT" - TRAVERSE OBJECT LIST
  7624.     AX = DE2Bh
  7625.     ES:DI -> starting object
  7626.         0000h:0000h for first object in list???
  7627. Return: AX = status
  7628.         0000h successful
  7629.         ES:DI -> next object of same type (window/non-window)
  7630.         0001h failed (ES:DI was not a valid handle)
  7631. Notes:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  7632.     there are two separate lists, one for window/task objects and one
  7633.       for all other objects
  7634. SeeAlso: AX=1016h,AX=DE2Ah,AX=DE2Ch
  7635. --------Q-15DE2C-----------------------------
  7636. INT 15 - DESQview v2.50+ - "WININFO" - GET WINDOW INFORMATION
  7637.     AX = DE2Ch
  7638.     DX = window information format version (0100h for DESQview 2.5x)
  7639.     BX = segment of window handle or 0000h for default
  7640.     ES:DI -> buffer for window information (see #0471)
  7641. Return: AX = status
  7642.         0000h successful
  7643. Note:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  7644. SeeAlso: AX=1000h,AX=1016h,AX=DE01h,AX=DE2Bh
  7645.  
  7646. Format of DESQview window information:
  7647. Offset    Size    Description    (Table 0471)
  7648.  00h    BYTE    task flag: 00h window, 01h task
  7649.  01h    BYTE    process number if owner task
  7650.         00h if non-owner task
  7651.  02h    WORD    segment of owner's handle, 0000h if orphaned
  7652.  04h    WORD    mapping context (see #0335 at AX=1016h)
  7653.  06h    BYTE    task status (see #0472)
  7654.  07h    BYTE    unused
  7655.  08h    WORD    status bits (see #0473)
  7656.  0Ah    BYTE    01h if foreground-only window
  7657.  
  7658. (Table 0472)
  7659. Values for DESQview task status:
  7660.  00h    "Waiting" waiting for input
  7661.  01h    "Idle" keyboard poll limit reached
  7662.  03h    same as 01h
  7663.  04h    "Pausing" INT 15/AX=1000h pause called
  7664.  04h    DV/X direct: user did something to allow task switch
  7665.  05h    "ModeChg" video mode about to be changed
  7666.  06h    "ModeNtf" notify that video mode changed
  7667.  07h    "MoniCh" requested change to other monitor
  7668.  08h    "StartPgm" control relinquished to start new process
  7669.  09h    "MgrCan" made window manager CANCEL command
  7670.  0Ah    "Slicing" time slice expired
  7671.  0Bh    "Exit DOS" notify on DOS calls
  7672.  0Ch    "Enter DOS" process is re-entering DOS
  7673.  0Dh    "Terminate" INT 21/AH=4Ch or task freed
  7674.  0Eh    "BrkNxt" Control-Break pressed
  7675.  0Fh    "MgrCol" keyboard focus taken away
  7676.  10h    "PgmInt" interrupted by API call from another task
  7677.  11h    "BldOpen" call to INT 15/AX=DE01h
  7678.  
  7679. Bitfields for DESQview task status bits:
  7680. Bit(s)    Description    (Table 0473)
  7681.  6    task is freeing another task
  7682.  5    process is being created
  7683.  4    user suspended process
  7684.  3    process suspended itself
  7685.  2    process is resized direct window (suspended)
  7686.  1    process swapped out
  7687.  0    DESQview process
  7688. --------Q-15DE2D-----------------------------
  7689. INT 15 U - DESQview v2.50+ - GET/SET SOCKET HANDLER
  7690.     AX = DE2Dh
  7691.     CX = direction
  7692.         FFFFh set socket handler
  7693.         DX:BX -> FAR function for socket interface
  7694.             must be of the format described under INT 63"DESQview"
  7695.               at #3147
  7696.         other get socket handler
  7697.         Return: DX:BX -> socket handler (see #3147)
  7698. Notes:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  7699.     the "set" subfunction is normally called only by SOCKET.DVR
  7700. SeeAlso: AX=DE2Eh,INT 63"DESQview",#3147
  7701. --------Q-15DE2E-----------------------------
  7702. INT 15 U - DESQview v2.50+ - SOCKET API
  7703.     AX = DE2Eh
  7704.     DX:BX -> socket record (see #0475)
  7705.         0000h:0000h to create a new socket record
  7706. Return: CX = size of socket record in bytes
  7707.     DX:BX -> socket record which was used
  7708. Notes:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  7709.     socket records are allocated from common memory
  7710.     for Unix compatibility, each socket and connection on a socket is
  7711.       allocated a DOS file handle (referencing an SFT for NUL) which is
  7712.       used on various calls to specify which of possibly multiple
  7713.       connections is to be operated upon
  7714. SeeAlso: AX=DE2Dh,INT 61/AX=0001h/SF=0001h"VINES",INT 63"DESQview"
  7715.  
  7716. (Table 0474)
  7717. Values for DESQview/X socket API function number:
  7718.  0000h    initialize socket???
  7719.  0001h    "gethostname"
  7720.  0002h    "ioctl" check for input
  7721.  0003h    "sleep" delay for specified period
  7722.  0004h    "htons" convert word to network (big-endian) byte order
  7723.  0005h    "select"
  7724.  0006h    "bsd_close"/"so_close" close socket
  7725.  0007h    NOP
  7726.  0008h    "connect" initiate connection on socket
  7727.  0009h    "recv"/"recvfrom" read from socket
  7728.  000Ah    "socket"
  7729.  000Bh    ???
  7730.  000Ch    "gethostbyname"
  7731.  000Dh    "send"/"sendto" write to socket
  7732.  000Eh    ??? (does something to all connections for process)
  7733.  000Fh    "getpid" get process identifier
  7734.  0010h    "gettimeofday"
  7735.  0011h    "bind" assign name to socket
  7736.  0012h    "listen" listen for connections on socket
  7737.  0013h    "accept" accept connection on socket
  7738.  0014h    connect to X server
  7739.  0015h    "gethostbyaddr" get host information for an address
  7740.  0016h    "getprotobyname"
  7741.  0017h    "getprotobynumber"
  7742.  0018h    "getservbyname"
  7743.  0019h    "getservbyport"
  7744.  001Ah    "getsockname" determine name bound to socket
  7745.  001Bh    "getpeername" get name of connected peer
  7746.  001Ch    "getsockopt"/"setsockopt"
  7747.  001Dh    "so_exit"     close all sockets for calling process
  7748.  001Eh    "issock" determine whether file handle references socket
  7749.  001Fh    "so_attach" reattach previously detached socket
  7750.  0020h    "so_detach" temporarily detach socket
  7751.  0021h    "dvpath" get DESQview directory (see also AX=DE24h)
  7752.  0022h    "NewProc" start new application (see also AX=102Ch)
  7753.  0023h    "so_linkup"
  7754.  0024h    "CanonicalPath" canonicalize filename (see also INT 21/AH=60h)
  7755.  0025h    indirect INT 15h call
  7756.  0026h    Network Manager interface
  7757.  0027h    "so_unlink"    close connection from "so_linkup"
  7758.  0028h    "raisepriority"
  7759.  0029h    "lowerpriority"
  7760.  002Ah    "so_private" ???
  7761.  FFFFh    "NetExit" (appears to be a NOP)
  7762.  
  7763. Format of DESQview/X socket record:
  7764. Offset    Size    Description    (Table 0475)
  7765.  00h    WORD    signature F0ADh
  7766.  02h    WORD    function number (see #0474)
  7767.  04h    WORD    returned error code (see #0495)
  7768.  06h    WORD    maximum message size??? (usually 0400h)
  7769.  08h    WORD    PSP segment to use or 0000h if socket not valid
  7770.  0Ah    WORD    scratch space (JFT size)
  7771.  0Ch    DWORD    scratch space (JFT address)
  7772.  10h    DWORD    mailbox handle (initialized by function 0000h)
  7773.  14h    DWORD    timer object handle (initialized by function 0000h)
  7774. ---function 0000h---
  7775.  18h    WORD    (ret) ???
  7776. ---function 0001h---
  7777.  18h    WORD    (ret) status???
  7778.  1Ah 128 BYTEs    (ret) ASCIZ hostname (empty string if not on network)
  7779.  9Ah    WORD    maximum length of hostname to return
  7780. ---function 0002h---
  7781.  18h    WORD    (ret) status
  7782.  1Ah    WORD    socket's file handle
  7783.  1Ch    WORD    IOCTL function
  7784.         05h "FIONREAD" determine available input
  7785.         06h "FIONBIO" set blocking state of socket
  7786.  1Eh    WORD    (return, subfn 05h) number of bytes available for reading
  7787.         (call, subfn 06h) 0000h blocking, nonzero nonblocking
  7788. ---function 0003h---
  7789.  18h  2 BYTEs    unused
  7790.  1Ah    WORD    delay time in seconds
  7791. ---function 0004h---
  7792.  18h    WORD    (ret) result in network (big-endian) byte order
  7793.  1Ah    WORD    value to convert to network byte order
  7794. ---function 0005h---
  7795.  18h    WORD    (ret) number of handles meeting the specified conditions???
  7796.  1Ah    WORD    number of file handles in each bitset
  7797.  1Ch    DWORD    bitset of socket handles to check for readability
  7798.  20h    DWORD    bitset of socket handles to check for writability
  7799.  24h    DWORD    bitset of socket handles to check for errors
  7800.  28h    WORD    timeout in ??? or 0000h to block until some socket ready
  7801.  2Ah    DWORD    ???
  7802.  2Eh    DWORD    ???
  7803. ---function 0006h---
  7804.  18h    WORD    (ret) status: 0000h if successful, FFFFh on error
  7805.  1Ah    WORD    socket's file handle
  7806. ---function 0008h---
  7807.  18h    WORD    (ret) status: 0000h if successful, FFFFh on error
  7808.  1Ah    WORD    socket's file handle
  7809.  1Ch    WORD    0001h if socket name specified, 0000h if not
  7810.  1Eh    WORD    length of socket name
  7811.  20h  N BYTEs    name of socket to which to connect
  7812. ---function 0009h---
  7813.  18h    WORD    (ret) number of bytes actually read, 0000h if connection
  7814.             closed, or FFFFh on error
  7815.  1Ah    WORD    socket's file handle
  7816.  1Ch    WORD    number of bytes to read
  7817.  1Eh    WORD    flags
  7818.  20h    WORD    0000h if no source address desired
  7819.         0001h if source address is to be stored (datagram sockets)
  7820.  22h    WORD    length of source address
  7821.  24h 110 BYTEs    source address
  7822.  92h 1K BYTEs    buffer for data to be read
  7823. ---function 000Ah---
  7824.  18h    WORD    (ret) socket's file handle or FFFFh on error
  7825.  1Ah    WORD    address family (0001h,0002h)
  7826.  1Ch    WORD    socket type
  7827.  1Eh    WORD    protocol
  7828. ---function 000Bh---
  7829.  18h    WORD    (ret) 0001h if ??? or FFFFh on error
  7830.  1Ah    WORD    socket's file handle
  7831.  1Eh    WORD    (call) ???
  7832. ---function 000Ch---
  7833.  18h 128 BYTEs    ASCIZ hostname (special case if empty string or "unix")
  7834.  98h    ???    (ret) packed 'hostent' structure
  7835.  A2h    ???    (ret) ???
  7836. ---function 000Dh---
  7837.  18h    WORD    (ret) number of bytes actually written or FFFFh on error
  7838.  1Ah    WORD    socket's file handle
  7839.  1Ch    WORD    number of bytes to write
  7840.  1Eh    WORD    number of bytes to follow in subsequent writes???
  7841.  20h    WORD    flags
  7842.  22h    WORD    0000h if no destination specified, 0001h if destination present
  7843.  24h    WORD    0001h if broadcast message???, 0000h if not
  7844.         (ignored if no destination specified)
  7845.  26h    WORD    length of destination address
  7846.  28h 110 BYTEs    destination address
  7847.  96h 1K BYTEs    buffer containing data to be written
  7848. ---function 000Eh---
  7849.  no additional fields
  7850. ---function 000Fh---
  7851.  18h    DWORD    (ret) DESQview task handle of calling process
  7852. ---function 0010h---
  7853.  18h    DWORD    (ret) current time
  7854.  1Ch    DWORD    (ret) ???
  7855. ---function 0011h---
  7856.  18h    WORD    (ret) status: 0000h if successful, FFFFh on error
  7857.  1Ah    WORD    socket's file handle
  7858.  1Ch    WORD    length of name
  7859.  1Eh  N BYTEs    buffer for socket name
  7860. ---function 0012h---
  7861.  18h    WORD    (ret) status: 0000h if successful, FFFFh on error
  7862.  1Ah    WORD    socket's file handle
  7863.  1Ch    WORD    maximum backlog of pending connections allowed on socket
  7864. ---function 0013h---
  7865.  18h    WORD    (ret) file handle for new connection or FFFFh on error
  7866.  1Ah    WORD    listen()ing socket's file handle
  7867.  1Ch    WORD    (call) length of buffer for connecting entity's address
  7868.         (ret) actual length of address
  7869.  1Eh  N BYTEs    buffer for connecting entity's address (110 bytes???)
  7870. ---function 0014h---
  7871.  18h    WORD    (ret) socket's file handle or FFFFh on error
  7872.  1Ah  4 BYTEs    (ret) ???
  7873.  1Eh    WORD    (ret) ???
  7874.  20h    WORD    (ret) ???
  7875.  22h 256 BYTEs    ASCIZ X display name
  7876. 122h    ???
  7877. ---function 0015h---
  7878.  18h    WORD    (call) type of address??? (test for 0001h seen)
  7879.  1Ah    WORD    (call) length of buffer for host address
  7880.  1Ch 110 BYTEs    buffer containing ASCIZ host address
  7881.  8Ah    WORD    (ret) offset of official host name
  7882.  8Ch    WORD    (ret) offset of alias list???
  7883.  8Eh    WORD    (ret) address type???
  7884.  90h    WORD    (ret) length of an address in bytes???
  7885.  92h    WORD    (ret) offset of address???
  7886.  9Ah  N BYTEs    (ret) buffer for hostname, alias list, and host address
  7887. ---function 0016h---
  7888.  18h    ???    buffer for ASCIZ protocol name
  7889.  98h    ???
  7890. ---function 0017h---
  7891.  18h    WORD    (call) protocol number
  7892.  1Ah    WORD    (ret) ??? or 0001h
  7893. ---function 0018h---
  7894.  18h 128 BYTEs    buffer containing ASCIZ ???
  7895.  98h 128 BYTEs    buffer containing ASCIZ ???
  7896. 118h    WORD    (ret) ???
  7897. ---function 0019h---
  7898.  18h    WORD    port number
  7899.  1Ah 128 BYTEs    (call) ASCIZ host name
  7900.         (ret) packed servent strctures???
  7901.  9Ah    WORD    (ret) ???
  7902. ---function 001Ah---
  7903.  18h    WORD    (ret) 0000h if successful, FFFFh on error
  7904.  1Ah    WORD    socket's file handle
  7905.  1Ch    WORD    (call) length of buffer for socket name
  7906.         (ret) actual length of socket name
  7907.  1Eh  N BYTEs    buffer for socket name
  7908. ---function 001Bh---
  7909.  18h    WORD    (ret) status: 0000h if successful, FFFFh on error
  7910.  1Ah    WORD    socket's file handle
  7911.  1Ch    WORD    (call) size of buffer for name
  7912.         (ret) actual size of name
  7913.  1Eh  N BYTEs    buffer for peer's name
  7914. ---function 001Ch---
  7915.  18h    WORD    (ret) status: 0000h if successful, FFFFh on error
  7916.  1Ah    WORD    direction: 0000h to get, 0001h to set
  7917.  1Ch    WORD    socket's file handle
  7918.  1Eh    WORD    option level
  7919.  20h    WORD    option name
  7920.  22h    WORD    (call) length of buffer for option value
  7921.         (ret) actual length of option value
  7922.  24h  N BYTEs    buffer for option value
  7923. ---function 001Dh---
  7924.  no additional fields
  7925. ---function 001Eh---
  7926.  18h    WORD    (ret) status: 0000h ??? or 0001h ???
  7927.  1Ah    WORD    file handle which may or may not be a socket
  7928. ---function 001Fh---
  7929.  18h    WORD    (ret) file handle or FFFFh on error
  7930.  1Ah    DWORD    (call) pointer to Socket Context Record (see #0496) of a
  7931.             previously detached socket
  7932. ---function 0020h---
  7933.  18h    WORD    (ret) status: 0000h if successful or FFFFh on error
  7934.  1Ah    WORD    socket's file handle
  7935.  1Ch    DWORD    (ret) pointer to Socket Context Record (see #0496) for
  7936.             the file handle
  7937. ---function 0021h---
  7938.  18h 64 BYTEs    buffer for DESQview startup directory (see AX=DE25h)
  7939. ---function 0022h---
  7940.  18h    DWORD    (ret) task handle of new application
  7941.  1Ch    WORD    size of .DVP data
  7942.  1Eh 129 BYTEs    ASCIZ ???
  7943.  9Fh  N BYTEs    .DVP data (see #0346 at AX=102Ch)
  7944. ---function 0023h---
  7945.  18h    WORD    (ret) ??? or FFFFh on error
  7946.  1Ah    WORD    socket's file handle???
  7947. ---function 0024h---
  7948.  18h    WORD    (ret) DOS error code (see #1332 at INT 21/AH=59h/BX=0000h)
  7949.             0000h if successful
  7950.  1Ah 129 BYTEs    ASCIZ filename/pathname
  7951. 11Bh 129 BYTEs    ASCIZ canonicalized filename/pathname (see INT 21/AH=60h)
  7952. ---function 0025h---
  7953.  18h    WORD    value of AX
  7954.  1Ah    WORD    value of BX
  7955.  1Ch    WORD    (call) value of CX for call if AH value other than 12h
  7956.         (call) number of stack parameters if AH value is 12h
  7957.         (ret) returned CX for calls other than INT 15/AH=12h
  7958.  1Eh    WORD    value of DX
  7959.  20h    WORD    value of DI
  7960.  22h    WORD    value of SI
  7961.  24h    WORD    value of DS
  7962.  26h    WORD    value of ES
  7963.  28h    WORD    (ret) value of FLAGS after call
  7964.  2Ah  N DWORDs    (call) stack parameters for INT 15/AH=12h call
  7965.         (ret) stack results from INT 15/AH=12h call
  7966. ---function 0026h---
  7967.  18h    WORD    (call) Network Manager subfunction (see #0476)
  7968.         (ret) status??? (0000h on error)
  7969.  1Ah    WORD    (call) size of parameter data
  7970.         (ret) size of returned data
  7971.  1Ch  N BYTEs    (call) parameter data required by call (see #0477,#0478,#0494)
  7972.         (ret) result data (see #0487,#0488,#0493)
  7973. ---function 0027h---
  7974.  18h    WORD    (ret) status: 0000h if successful, FFFFh on error
  7975.  1Ah    WORD    socket's file handle
  7976. ---functions 0028h,0029h---
  7977.  18h    WORD    (call) file handle for which to set priority low/high
  7978.             FFFFh to change calling task's priority
  7979. ---function 002Ah---
  7980.  no additional fields
  7981.  
  7982. (Table 0476)
  7983. Values for DESQview/X Network Manager subfunction:
  7984.  0004h    "so_exit"???
  7985.  0005h    "gethostbyname"
  7986.  0006h    "gethostname"
  7987.  0009h    "socket"
  7988.  000Dh    "gethostbyaddr"
  7989.  000Fh    "getprotobyname"
  7990.  0010h    get protocol name for protocol number
  7991.  0011h    "getservbyname"
  7992.  0012h    "getservbyport" (see #0480)
  7993.  0013h    "getsockname"??? (see #0481)
  7994.  0016h    "shutdown" (see #0482)
  7995.  0017h    kill Network Manager
  7996.  0018h    "getpeername"??? (see #0483)
  7997.  0019h    ??? (called by socket function 0000h) (see #0484)
  7998.  001Ah    ??? (see #0485)
  7999.  001Bh    "so_linkup" (see #0486)
  8000.  001Dh    "getnetstatus" get network services (see #0487)
  8001.  001Fh    "getpwuid"
  8002.  0020h    "getpwnam"
  8003.  0021h    "getpwvar"
  8004.  0022h    "crypt"
  8005.  0023h    "so_unlink"
  8006.  0024h    "getlogin" (see #0488)
  8007.  0028h    "sethostent"
  8008.  0029h    "gethostent"
  8009.  002Ah    "soaddhost"
  8010.  002Bh    "soupdatehost"
  8011.  002Ch    "sodeletehost"
  8012.  002Dh    "setservent"
  8013.  002Eh    "getservent"
  8014.  002Fh    "setpwent"
  8015.  0030h    "getpwent" (see #0489)
  8016.  0031h    "sethostpath" (see #0490)
  8017.  0032h    "endservent"
  8018.  0033h    "endhostent"
  8019.  0034h    "getnettype" get IP network number (see #0491)
  8020.  0035h    ??? (pops up Network Manager window)
  8021.  0037h    "getnettimeout" (see #0492)
  8022.  0038h    get machine name and IP address (see #0493)
  8023.  0039h    "getuid" (see #0494)
  8024. ---DV/X v2.0+ ---
  8025.  0041h    "deletepwnam"
  8026.  0045h    "renamepw"
  8027.  
  8028. Format of Function 0026h/Subfunction 000Fh data:
  8029. Offset    Size    Description    (Table 0477)
  8030.  00h  8 BYTEs    (ret) ???
  8031.  
  8032. Format of Function 0026h/Subfunction 0010h data:
  8033. Offset    Size    Description    (Table 0478)
  8034.  00h  2 BYTEs    (ret) ???
  8035.  02h    WORD    (ret) protocol number
  8036.  04h    WORD    (call) protocol number for which to get name
  8037.  06h    WORD    (ret) ???
  8038.  08h    var    (ret) ASCIZ protocol name
  8039.  N    var    (ret) ASCIZ protocol name
  8040.  
  8041. Format of Function 0026h/Subfunction 0011h data:
  8042. Offset    Size    Description    (Table 0479)
  8043.  00h  8 BYTEs    ???
  8044.  08h    var    (ret) ASCIZ protocol name
  8045.     var    (ret) ASCIZ ??? name
  8046.     var    (ret) ASCIZ ??? name
  8047.  
  8048. Format of Function 0026h/Subfunction 0012h data:
  8049. Offset    Size    Description    (Table 0480)
  8050.  00h  8 BYTEs    (ret) ???
  8051.  
  8052. Format of Function 0026h/Subfunction 0013h data:
  8053. Offset    Size    Description    (Table 0481)
  8054.  00h 116 BYTEs    (ret) ???
  8055.  
  8056. Format of Function 0026h/Subfunction 0016h ("shutdown") data:
  8057. Offset    Size    Description    (Table 0482)
  8058.  00h    WORD    (ret) shutdown status (0000h successful, FFFFh error)
  8059.  02h  4 BYTEs    (ret) ???
  8060.  04h    WORD    (call) socket handle
  8061.  06*h    WORD    (call) what (0 = receives, 1 = sends, 2 = both)
  8062.  
  8063. Format of Function 0026h/Subfunction 0018h data:
  8064. Offset    Size    Description    (Table 0483)
  8065.  00h 116 BYTEs    (ret) ???
  8066.  
  8067. Format of Function 0026h/Subfunction 0019h data:
  8068. Offset    Size    Description    (Table 0484)
  8069.  00h  4 BYTEs    (ret) ???
  8070.  04h    DWORD    (ret) task handle of ???
  8071.  
  8072. Format of Function 0026h/Subfunction 001Ah data:
  8073. Offset    Size    Description    (Table 0485)
  8074.  00h 38 BYTEs    (ret) ???
  8075.  
  8076. Format of Function 0026h/Subfunction 001Bh data:
  8077. Offset    Size    Description    (Table 0486)
  8078.  00h 10 BYTEs    (ret) ???
  8079.  
  8080. Format of Function 0026h/Subfunction 001Dh return data [array]:
  8081. Offset    Size    Description    (Table 0487)
  8082.  00h    WORD    ??? or FFFFh if end of array
  8083.  02h  7 BYTEs    ???
  8084.  09h 27 BYTEs    ASCIZ name of service
  8085.  
  8086. Format of Function 0026h/Subfunction 0024h return data:
  8087. Offset    Size    Description    (Table 0488)
  8088.  00h    var    ASCIZ username
  8089.  
  8090. Format of Function 0026h/Subfunction 0030h data:
  8091. Offset    Size    Description    (Table 0489)
  8092.  00h    WORD    (call) UID or 0000h for current user
  8093.         (ret) ???
  8094.  02h    WORD    (ret) UID
  8095.  04h  6 BYTEs    (ret) ???
  8096.  0Ah    var    (ret) ASCIZ username
  8097.     var    (ret) ASCIZ encrypted password
  8098.     var    (ret) ASCIZ initial ("home") directory
  8099.  
  8100. Format of Function 0026h/Subfunction 0031h ("sethostpath") data:
  8101. Offset    Size    Description    (Table 0490)
  8102.  00h   4 BYTEs    ???
  8103.  04h 144 BYTEs    ASCIZ ???
  8104.  
  8105. Format of Function 0026h/Subfunction 0034h data:
  8106. Offset    Size    Description    (Table 0491)
  8107.  00h  1-3 BYTEs IP network number of caller's machine (low byte first)
  8108.  
  8109. Format of Function 0026h/Subfunction 0037h ("getnettimeout") return data:
  8110. Offset    Size    Description    (Table 0492)
  8111.  00h    WORD    (ret) timeout
  8112.  02h  2 BYTEs    (ret) ???
  8113.  
  8114. Format of Function 0026h/Subfunction 0038h return data:
  8115. Offset    Size    Description    (Table 0493)
  8116.  00h    BYTE    ???
  8117.  01h  4 BYTEs    IP address
  8118.  05h    var    ASCIZ machine name
  8119.     ???
  8120.  
  8121. Format of Function 0026h/Subfunction 0039h ("getuid") return data:
  8122. Offset    Size    Description    (Table 0494)
  8123.  00h    WORD    user ID
  8124.  02h  2 BYTEs    ???
  8125. SeeAlso: #0490,#0493
  8126.  
  8127. (Table 0495)
  8128. Values for DESQview/X socket error code:
  8129.  0000h    successful
  8130.  0009h    "BADF" bad file handle
  8131.  000Ch    "ENOMEM" out of memory
  8132.  000Eh    "EFAULT" bad address
  8133.  0016h    "EINVAL" invalid argument
  8134.  0018h    "EMFILE" too many open files
  8135.  0020h    "EPIPE" ??? broken pipe
  8136.  0023h    "EWOULDBLOCK" operation cannot be completed at this time
  8137.  0024h    "EINPROGRESS" operation now in progress
  8138.  0026h    "ENOTSOCK" socket invalid
  8139.  0028h    "EMSGSIZE" message too long to send atomically
  8140.  002Ch    "ESOCKTNOSUPPORT" socket type not supported
  8141.  002Fh    "EAFNOSUPPORT" address family not supp. by protocol fam.
  8142.  0031h    "EDOM" argument too large
  8143.  0038h    "EISCONN" socket is already connected
  8144.  0039h    "ENOTCONN" socket is not connected
  8145.  
  8146. Format of DESQview/X Socket Context Record:
  8147. Offset    Size    Description    (Table 0496)
  8148.  00h    DWORD    pointer to next Socket Context Record, 0000h:0000h if last
  8149.  04h    WORD    SFT index for socket, 00FFh if not connected, FFFFh if detached
  8150.  06h    WORD    PSP segment of owner or 0000h
  8151.  08h    WORD    mapping context of owning window (see #0335 at AX=1016h)
  8152.  0Ah  2 BYTEs    ???
  8153.  0Ch    WORD    address family
  8154.  0Eh    WORD    socket type
  8155.  10h    WORD    protocol
  8156.  12h    WORD    socket state
  8157.         0001h created
  8158.         0002h bound
  8159.         0003h listening???
  8160.         0005h connected
  8161.  14h    DWORD    timer object handle
  8162.  18h    DWORD    object handle (mailbox???)
  8163.  1Ch    DWORD    object handle of parent of above object or 0000h:0000h
  8164.  20h    DWORD    pointer to ??? or 0000h
  8165.  24h  6 BYTEs    ???
  8166.  2Ah    WORD    file handle for socket or FFFFh
  8167.  2Ch  2 BYTEs    ???
  8168.  2Eh    WORD    nonzero if socket nonblocking
  8169. ---network connections only---
  8170.  30h  2 BYTEs    ???
  8171.  32h    WORD    ???
  8172.  34h  4 BYTEs    (big-endian) IP address of remote
  8173.  38h  6 BYTEs    ???
  8174. --------Q-15DE2F-----------------------------
  8175. INT 15 - DESQview v2.50+ - "VIDEONOTIFY" - HAS DIRECT WINDOW BEEN ACTIVE?
  8176.     AX = DE2Fh
  8177. Return: BX = status
  8178.         0001h keyboard focus has been given to a direct window since the
  8179.         last call
  8180.         0000h if not
  8181. Notes:    DESQview 2.50-2.53 are distributed as part of DESQview/X v1.00-1.10.
  8182.     Quarterdeck stated that this call would not be available under future
  8183.       versions of DESQview Classic, but it is still present in v2.60
  8184. --------Q-15DE30-----------------------------
  8185. INT 15 - DESQview v2.50+ - "GETDVXVERSION" - GET DESQview/X VERSION
  8186.     AX = DE30h
  8187. Return: BX = version (BH=major, BL=minor) or 0000h if not DESQview/X
  8188. Notes:    DESQview 2.50-2.53 are distributed as part of DESQview/X v1.00-1.10.
  8189.     you must first check the DESQview version to verify that it is 2.50 or
  8190.       greater
  8191. SeeAlso: INT 21/AH=2Bh/CX=4445h
  8192. --------Q-15DE31-----------------------------
  8193. INT 15 - DESQview/X v1.10 - ???
  8194.     AX = DE31h
  8195.     CX = ???
  8196.         0000h ???
  8197.         nonzero ???
  8198.     ???
  8199. Return: ???
  8200. --------b-15DF-------------------------------
  8201. INT 15 - Juko UNIQUE UX BIOS - TURBO MODE CONTROL
  8202.     AH = DFh
  8203.     AL = function
  8204.         00h turn on Turbo mode
  8205.         01h turn off Turbo mode
  8206.         02h set Turbo mode according to hardware switch
  8207. SeeAlso: INT 13/AX=FFFFh
  8208. --------b-15E00F-----------------------------
  8209. INT 15 - Compaq Systempro - MULTIPROCESSOR DISPATCH
  8210.     AX = E00Fh
  8211.     ES:BX -> start of 2nd processor's execution
  8212. Return: AL = status
  8213.         0Fh successful
  8214.         00h failure
  8215. SeeAlso: AX=E10Eh,AX=E200h
  8216. --------b-15E10E-----------------------------
  8217. INT 15 - Compaq Systempro - MULTIPROCESSOR END-OF-DISPATCH
  8218.     AX = E10Eh
  8219.     ES:BX -> start of 2nd processor's execution
  8220. Return: AL = status
  8221.         0Fh successful (halted)
  8222.         00h failure (not halted)
  8223. SeeAlso: AX=E00Fh,AX=E200h
  8224. --------b-15E200-----------------------------
  8225. INT 15 - Compaq Systempro - MULTIPROCESSOR AVAILABLE
  8226.     AX = E200h
  8227. Return: AX bit 15 set if 2nd processor available
  8228. SeeAlso: AX=E00Fh,AX=E10Eh
  8229. --------b-15E4-------------------------------
  8230. INT 15 - Tandy??? - ???
  8231.     AH = E4h
  8232.     AL = subfunction
  8233.         21h, 89h, 8Ah, 8Bh called by 386MAX v6.01
  8234.     DL = ???
  8235. Return: DL = 00h if successful???
  8236. Note:    the section of code in 386MAX which calls these functions also checks
  8237.       whether the ROM BIOS has both Tandy and Phoenix Technologies
  8238.       signatures if these calls fail; the Tandy 1000SL/TL BIOS does not
  8239.       support this function, however, returning the usual CF set/AH=86h for
  8240.       "unsupported function".
  8241. --------b-15E4-------------------------------
  8242. INT 15 - Compaq ROM BIOS 03/08/93 and newer - ???
  8243.     AH = E4h
  8244.     AL = subfunction
  8245.         00h get ???
  8246.         Return: CF clear
  8247.             AH = 00h
  8248.             CX = 0000h
  8249.             BX = ??? (read from [XBDA:0094h])
  8250.         01h,02h unsupported by this ROM version
  8251.         Return: CF set, AH = 86h
  8252.         80h,90h,A0h,B0h,C0h,D0h,E0h,F0h set ???
  8253.         Return: CF clear
  8254.             AH = 00h
  8255.             CX = 0000h
  8256.             BX = ???
  8257.         81h,91h,A1h,B1h,C1h,D1h,E1h,F1h unsupported by 3/8/93&4/8/93 ROMs
  8258.         Return: CF set, AH = 86h
  8259. Notes:    functions 80h/90h/etc. are not supported by the 4/8/93 EISA System ROM
  8260.     these functions are not supported by the 7/26/93 LTE Lite 386 ROM
  8261. --------b-15E800-----------------------------
  8262. INT 15 - Compaq Contura - GET ???
  8263.     AX = E800h
  8264. Return: AX = 0000h
  8265.     BH = 00h
  8266.     BL = ??? (read from port 0C7Ch)
  8267.     CH = ???
  8268.     CL = ???
  8269.     DX = 0000h
  8270. Note:    also supported by 3/8/93 DESKPRO/i and 7/26/93 LTE Lite 386 ROM BIOS
  8271. --------b-15E800-----------------------------
  8272. INT 15 - Compaq Contura Aero, Contura 400 - GET SYSTEM MODEL CODE???
  8273.     AX = E800h
  8274.     BX = ??? (0000h)
  8275. Return: CF clear if successful
  8276.         BH = 02h
  8277.         BL = submodel??? (0Ch,0Dh,34h,38h,40h,44h,48h,64h,68h)
  8278.     CF set on error
  8279.     others???
  8280. Notes:    used by Compaq's SOFTPAQ number 0937 EPPBIOS.SYS to determine whether
  8281.       the Enhanced Parallel Port expected by that driver is available
  8282.     used by Compaq's SOFTPAW number 0856 VOLCTRL.EXE to determine whether
  8283.       volume control hardware expected by that driver is available
  8284. --------b-15E800-----------------------------
  8285. INT 15 - Compaq Prolinea - GET ???
  8286.     AX = E800h
  8287.     BX = ??? (1369h)
  8288. Return: BH = 01h
  8289.     BL = ???
  8290.     others???
  8291. Note:    used by Compaq's SOFTPAQ number 0718 INT10_04.SYS to determine whether
  8292.       the fix that driver applies is required (will not install if BX on
  8293.       return is other than 010Eh or 010Fh)
  8294. SeeAlso: AX=E802h
  8295. --------b-15E801-----------------------------
  8296. INT 15 - Phoenix BIOS v4.0 - GET MEMORY SIZE FOR >64M CONFIGURATIONS
  8297.     AX = E801h
  8298. Return: CF clear if successful
  8299.         AX = extended memory between 1M and 16M, in K (max 3C00h = 15MB)
  8300.         BX = extended memory above 16M, in 64K blocks
  8301.         CX = configured memory 1M to 16M, in K
  8302.         DX = configured memory above 16M, in 64K blocks
  8303.     CF set on error
  8304. Notes:    supported by the A03 level (6/14/94) and later XPS P90 BIOSes, as well
  8305.       as the Compaq Contura, 3/8/93 DESKPRO/i, and 7/26/93 LTE Lite 386 ROM
  8306.       BIOS
  8307.     supported by AMI BIOSes dated 8/23/94 or later
  8308.     this interface is used by Windows NT 3.1, OS/2 v2.11/2.20, and is
  8309.       used as a fall-back by newer versions if AX=E820h is not supported
  8310. SeeAlso: AH=8Ah"Phoenix",AX=E802h,AX=E820h,AX=E881h"Phoenix"
  8311. --------b-15E802-----------------------------
  8312. INT 15 - Compaq Contura - GET ???
  8313.     AX = E802h
  8314. Return: CF clear
  8315.     AX = 0000h
  8316.     BX = ???
  8317.     CX = 0000h
  8318. Note:    this function is also supported by the LTE Lite 25c, 25E, and 486; not
  8319.       supported by LTE Lite 20 and 25.
  8320. SeeAlso: AX=E801h"Phoenix"
  8321. --------b-15E820-----------------------------
  8322. INT 15 - newer BIOSes - GET SYSTEM MEMORY MAP
  8323.     AX = E820h
  8324.     EAX = 0000E820h
  8325.     EDX = 534D4150h ('SMAP')
  8326.     EBX = continuation value or 00000000h to start at beginning of map
  8327.     ECX = size of buffer for result, in bytes (should be >= 20 bytes)
  8328.     ES:DI -> buffer for result (see #0498)
  8329. Return: CF clear if successful
  8330.         EAX = 534D4150h ('SMAP')
  8331.         ES:DI buffer filled
  8332.         EBX = next offset from which to copy or 00000000h if all done
  8333.         ECX = actual length returned in bytes
  8334.     CF set on error
  8335.         AH = error code (86h) (see #0415 at INT 15/AH=80h)
  8336. Notes:    originally introduced with the Phoenix BIOS v4.0, this function is
  8337.       now supported by most newer BIOSes, since various versions of Windows
  8338.       call it to find out about the system memory
  8339.     a maximum of 20 bytes will be transferred at one time, even if ECX is
  8340.       higher; some BIOSes (e.g. Award Modular BIOS v4.50PG) ignore the
  8341.       value of ECX on entry, and always copy 20 bytes
  8342.     some BIOSes expect the high word of EAX to be clear on entry, i.e.
  8343.       EAX=0000E820h
  8344.     if this function is not supported, an application should fall back
  8345.       to AX=E802h, AX=E801h, and then AH=88h
  8346.     the BIOS is permitted to return a nonzero continuation value in EBX
  8347.       and indicate that the end of the list has already been reached by
  8348.       returning with CF set on the next iteration
  8349.     this function will return base memory and ISA/PCI memory contiguous
  8350.       with base memory as normal memory ranges; it will indicate
  8351.       chipset-defined address holes which are not in use and motherboard
  8352.       memory-mapped devices, and all occurrences of the system BIOS as
  8353.       reserved; standard PC address ranges will not be reported
  8354. SeeAlso: AH=C7h,AX=E801h"Phoenix",AX=E881h,MEM xxxxh:xxx0h"ACPI"
  8355.  
  8356. Format of Phoenix BIOS system memory map address range descriptor:
  8357. Offset    Size    Description    (Table 0497)
  8358.  00h    QWORD    base address
  8359.  08h    QWORD    length in bytes
  8360.  10h    DWORD    type of address range (see #0498)
  8361.  
  8362. (Table 0498)
  8363. Values for System Memory Map address type:
  8364.  01h    memory, available to OS
  8365.  02h    reserved, not available (e.g. system ROM, memory-mapped device)
  8366.  03h    ACPI Reclaim Memory (usable by OS after reading ACPI tables)
  8367.  04h    ACPI NVS Memory (OS is required to save this memory between NVS
  8368.       sessions)
  8369.  other    not defined yet -- treat as Reserved
  8370. SeeAlso: #0497
  8371. --------b-15E881-----------------------------
  8372. INT 15 - Phoenix BIOS v4.0 - GET MEMORY SIZE FOR >64M CONFIGURATIONS (32-bit)
  8373.     AX = E881h
  8374. Return: CF clear if successful
  8375.         EAX = extended memory between 1M and 16M, in K (max 3C00h = 15MB)
  8376.         EBX = extended memory above 16M, in 64K blocks
  8377.         ECX = configured memory 1M to 16M, in K
  8378.         EDX = configured memory above 16M, in 64K blocks
  8379.     CF set on error
  8380. Notes:    supported by AMI BIOSes dated 8/23/94 or later
  8381.     this interface is used by Windows NT 3.1, OS/2 v2.11/2.20, and is
  8382.       used as a fall-back by newer versions if AX=E820h is not supported
  8383. SeeAlso: AX=E801h"Phoenix",AX=E820h"Phoenix"
  8384. --------m-15F200CX454D-----------------------
  8385. INT 15 - Tandon memory mapper - Tandon MAPPER HARDWARE INITIALIZATION CHECK ???
  8386.     AX = F200h
  8387.     CX = 454Dh
  8388. Return: CF clear if hardware already initialised
  8389.         BX = upper RAM areas in use
  8390.         bit 0: C000-C3FF
  8391.         bit 1: C400-C7FF
  8392.         ...
  8393.         bit 11: EC00-EFFF
  8394.     CF set if hardware not initialised yet
  8395. --------B-1600-------------------------------
  8396. INT 16 - KEYBOARD - GET KEYSTROKE
  8397.     AH = 00h
  8398. Return: AH = BIOS scan code
  8399.     AL = ASCII character
  8400. Notes:    on extended keyboards, this function discards any extended keystrokes,
  8401.       returning only when a non-extended keystroke is available
  8402.     the BIOS scan code is usually, but not always, the same as the hardware
  8403.       scan code processed by INT 09.  It is the same for ASCII keystrokes
  8404.       and most unshifted special keys (F-keys, arrow keys, etc.), but
  8405.       differs for shifted special keys
  8406.     some (older) clone BIOSes do not discard extended keystrokes and manage
  8407.       function AH=00h and AH=10h the same
  8408.     the K3PLUS v6.00+ INT 16 BIOS replacement doesn't discard extended
  8409.       keystrokes (same as with functions 10h and 20h), but will always
  8410.       translate prefix E0h to 00h. This allows old programs to use extended
  8411.       keystrokes and should not cause compatibility problems
  8412. SeeAlso: AH=01h,AH=05h,AH=10h,AH=20h,AX=AF4Dh"K3PLUS",INT 18/AH=00h
  8413. --------B-1601-------------------------------
  8414. INT 16 - KEYBOARD - CHECK FOR KEYSTROKE
  8415.     AH = 01h
  8416. Return: ZF set if no keystroke available
  8417.     ZF clear if keystroke available
  8418.         AH = BIOS scan code
  8419.         AL = ASCII character
  8420. Note:    if a keystroke is present, it is not removed from the keyboard buffer;
  8421.       however, any extended keystrokes which are not compatible with 83/84-
  8422.       key keyboards are removed by IBM and most fully-compatible BIOSes in
  8423.       the process of checking whether a non-extended keystroke is available
  8424.     some (older) clone BIOSes do not discard extended keystrokes and manage
  8425.       function AH=00h and AH=10h the same
  8426.     the K3PLUS v6.00+ INT 16 BIOS replacement doesn't discard extended
  8427.       keystrokes (same as with functions 10h and 20h), but will always
  8428.       translate prefix E0h to 00h. This allows old programs to use extended
  8429.       keystrokes and should not cause compatibility problems
  8430. SeeAlso: AH=00h,AH=11h,AH=21h,INT 18/AH=01h
  8431. --------B-1602-------------------------------
  8432. INT 16 - KEYBOARD - GET SHIFT FLAGS
  8433.     AH = 02h
  8434. Return: AL = shift flags (see #0499)
  8435.     AH destroyed by many BIOSes
  8436. SeeAlso: AH=12h,AH=22h,INT 17/AH=0Dh,INT 18/AH=02h
  8437.  
  8438. Bitfields for keyboard shift flags:
  8439. Bit(s)    Description    (Table 0499)
  8440.  7    Insert active
  8441.  6    CapsLock active
  8442.  5    NumLock active
  8443.  4    ScrollLock active
  8444.  3    Alt key pressed (either Alt on 101/102-key keyboards)
  8445.  2    Ctrl key pressed (either Ctrl on 101/102-key keyboards)
  8446.  1    left shift key pressed
  8447.  0    right shift key pressed
  8448. SeeAlso: #0504,#3375,MEM 0040h:0017h
  8449. --------B-1603-------------------------------
  8450. INT 16 - KEYBOARD - SET TYPEMATIC RATE AND DELAY
  8451.     AH = 03h
  8452.     AL = subfunction
  8453.         00h set default delay and rate (PCjr and some PS/2)
  8454.         01h increase delay before repeat (PCjr)
  8455.         02h decrease repeat rate by factor of 2 (PCjr)
  8456.         03h increase delay and decrease repeat rate (PCjr)
  8457.         04h turn off typematic repeat (PCjr and some PS/2)
  8458.         05h set repeat rate and delay (AT,PS)
  8459.         BH = delay value (00h = 250ms to 03h = 1000ms)
  8460.         BL = repeat rate (00h=30/sec to 0Ch=10/sec [def] to 1Fh=2/sec)
  8461.         06h get current typematic rate and delay (newer PS/2s)
  8462.         Return: BL = repeat rate (above)
  8463.             BH = delay (above)
  8464. Return: AH destroyed by many BIOSes
  8465. Note:    use INT 16/AH=09h to determine whether some of the subfunctions are
  8466.       supported
  8467. SeeAlso: INT 16/AH=09h,AH=29h"HUNTER",AH=2Ah"HUNTER"
  8468. --------B-1604-------------------------------
  8469. INT 16 - KEYBOARD - SET KEYCLICK (PCjr only)
  8470.     AH = 04h
  8471.     AL = keyclick state
  8472.         00h off
  8473.         01h on
  8474. Return: AH destroyed by many BIOSes
  8475. SeeAlso: AH=03h,AH=04h"K3PLUS"
  8476. --------b-1604-------------------------------
  8477. INT 16 - Tandy 2000 - KEYBOARD - FLUSH KEYBOARD BUFFER
  8478.     AH = 04h
  8479. Note:    this interrupt is identical to INT 51 on the Tandy 2000
  8480. SeeAlso: INT 16/AH=00h,INT 16/AH=02h,INT 16/AH=05h"Tandy 2000"
  8481. SeeAlso: INT 51"Tandy 2000"
  8482. --------K-1604-------------------------------
  8483. INT 16 - K3PLUS v6.22+ - SET KEYCLICK
  8484.     AH = 04h
  8485.     AL = keyclick state
  8486.         00h keyclick off, leave loudness setting unchanged
  8487.         01h keyclick on, leave loudness setting unchanged
  8488.         else
  8489.            bit 0: keyclick enabled if set
  8490.            bits 7-1: new keyclick loudness (non-zero)
  8491. Return: AH destroyed by many BIOSes
  8492. Note:    Applications which try to set a new loudness, but are unsure of the
  8493.       results of other INT 16/AH=04h implementations, should set the new
  8494.       loudness first, and then call this function again with AL=01h or
  8495.       AL=00h
  8496. SeeAlso: AH=03h,AH=04h"KEYBOARD",AX=AF4Dh
  8497. --------B-1605-------------------------------
  8498. INT 16 - KEYBOARD - STORE KEYSTROKE IN KEYBOARD BUFFER (AT/PS w enh keybd only)
  8499.     AH = 05h
  8500.     CH = BIOS scan code
  8501.     CL = ASCII character
  8502. Return: AL = status
  8503.         00h if successful
  8504.         01h if keyboard buffer full
  8505.     AH destroyed by many BIOSes
  8506. Notes:    under DESQview, a number of "keystrokes" invoke specific
  8507.       DESQview-related actions when they are read from the keyboard
  8508.       buffer (see #0500)
  8509.     similarly, some "keystrokes" invoke special functions on the HP 100LX
  8510.       and HP 200LX (see #0501)
  8511. SeeAlso: AH=00h,AH=25h"K3",AH=71h,AX=AF4Dh,AH=FFh,INT 15/AX=DE10h
  8512.  
  8513. (Table 0500)
  8514. Values for pseudo-keystrokes for DESQview:
  8515.  38FBh or FB00h    switch to next window (only if main menu already popped up)
  8516.  38FCh or FC00h    pop up DESQview main menu
  8517.  38FEh or FE00h    close the current window
  8518.  38FFh or FF00h    pop up DESQview learn menu
  8519.  
  8520. (Table 0501)
  8521. Values for pseudo-keystrokes for HP 100LX/200LX:
  8522.  EE00h    pop up topcard display and set other system manager applications
  8523.       into sleep mode
  8524. --------B-1605-------------------------------
  8525. INT 16 - KEYBOARD - SELECT KEYBOARD LAYOUT (PCjr only)
  8526.     AH = 05h
  8527.     AL = function
  8528.         01h set keyboard layout to French
  8529.         02h set keyboard layout to German
  8530.         03h set keyboard layout to Italian
  8531.         04h set keyboard layout to Spanish
  8532.         05h set keyboard layout to UK
  8533.         80h check if function supported
  8534.         Return: AL <> 80h if supported
  8535. Return: ???
  8536.     AH destroyed by many BIOSes
  8537. Note:    this function is called by the DOS 3.2 KEYBxx.COM
  8538. SeeAlso: AH=92h,AH=A2h,AX=AF4Dh
  8539. --------b-1605-------------------------------
  8540. INT 16 - Tandy 2000 - KEYBOARD - RESET KEYBOARD
  8541.     AH = 05h
  8542. Desc:    reset the keyboard and flush the keyboard buffer
  8543. Note:    this interrupt is identical to INT 51 on the Tandy 2000
  8544. SeeAlso: INT 16/AH=00h,INT 16/AH=02h,INT 16/AH=03h,INT 51"Tandy 2000"
  8545. --------B-1609-------------------------------
  8546. INT 16 - KEYBOARD - GET KEYBOARD FUNCTIONALITY
  8547.     AH = 09h
  8548. Return: AL = supported keyboard functions (see #0502)
  8549.     AH destroyed by many BIOSes
  8550. Note:    this function is only available if bit 6 of the second feature byte
  8551.       returned by INT 15/AH=C0h is set (see #0426)
  8552. SeeAlso: AH=03h,AH=0Ah,AH=10h,AH=11h,AH=12h,AH=20h,AH=21h,AH=22h,INT 15/AH=C0h
  8553.  
  8554. Bitfields for supported keyboard functions:
  8555. Bit(s)    Description    (Table 0502)
  8556.  7    reserved
  8557.  6    INT 16/AH=20h-22h supported (122-key keyboard support)
  8558.  5    INT 16/AH=10h-12h supported (enhanced keyboard support)
  8559.  4    INT 16/AH=0Ah supported
  8560.  3    INT 16/AX=0306h supported
  8561.  2    INT 16/AX=0305h supported
  8562.  1    INT 16/AX=0304h supported
  8563.  0    INT 16/AX=0300h supported
  8564. SeeAlso: #0428
  8565. --------K-160A-------------------------------
  8566. INT 16 - KEYBOARD - GET KEYBOARD ID
  8567.     AH = 0Ah
  8568. Return: BX = keyboard ID (see #0503)
  8569.     AH destroyed by many BIOSes
  8570. Notes:    check return value from AH=09h to determine whether this function is
  8571.       supported
  8572.     this function is also supported by the K3PLUS v6.00+ INT 16 BIOS
  8573.       replacement
  8574. SeeAlso: AH=09h,AX=AF4Dh,MEM 0040h:00C2h"AMI"
  8575.  
  8576. (Table 0503)
  8577. Values for keyboard ID:
  8578.  0000h    no keyboard attached
  8579.  41ABh    Japanese "G" keyboard (translate mode)
  8580.     MF2 Keyboard (usually in translate mode)
  8581.  54ABh    Japanese "P" keyboard (translate mode)
  8582.  83ABh    Japanese "G" keyboard (pass-through mode)
  8583.     MF2 Keyboard (pass-through mode)
  8584.  84ABh    Japanese "P" keyboard (pass-through mode)
  8585.  90ABh    old Japanese "G" keyboard
  8586.  91ABh    old Japanese "P" keyboard
  8587.  92ABh    old Japanese "A" keyboard
  8588. --------B-1610-------------------------------
  8589. INT 16 - KEYBOARD - GET ENHANCED KEYSTROKE (enhanced kbd support only)
  8590.     AH = 10h
  8591. Return: AH = BIOS scan code
  8592.     AL = ASCII character
  8593. Notes:    if no keystroke is available, this function waits until one is placed
  8594.       in the keyboard buffer
  8595.     the BIOS scan code is usually, but not always, the same as the hardware
  8596.       scan code processed by INT 09.  It is the same for ASCII keystrokes
  8597.       and most unshifted special keys (F-keys, arrow keys, etc.), but
  8598.       differs for shifted special keys.
  8599.     unlike AH=00h, this function does not discard extended keystrokes
  8600.     INT 16/AH=09h can be used to determine whether this function is
  8601.       supported, but only on later model PS/2s
  8602. SeeAlso: AH=00h,AH=09h,AH=11h,AH=20h
  8603. --------B-1611-------------------------------
  8604. INT 16 - KEYBOARD - CHECK FOR ENHANCED KEYSTROKE (enh kbd support only)
  8605.     AH = 11h
  8606. Return: ZF set if no keystroke available
  8607.     ZF clear if keystroke available
  8608.         AH = BIOS scan code
  8609.         AL = ASCII character
  8610. Notes:    if a keystroke is available, it is not removed from the keyboard buffer
  8611.     unlike AH=01h, this function does not discard extended keystrokes
  8612.     some versions of the IBM BIOS Technical Reference erroneously report
  8613.       that CF is returned instead of ZF
  8614.     INT 16/AH=09h can be used to determine whether this function is
  8615.       supported, but only on later model PS/2s
  8616. SeeAlso: AH=01h,AH=09h,AH=10h,AH=21h
  8617. --------B-1612-------------------------------
  8618. INT 16 - KEYBOARD - GET EXTENDED SHIFT STATES (enh kbd support only)
  8619.     AH = 12h
  8620. Return: AL = shift flags 1 (same as returned by AH=02h) (see #0504)
  8621.     AH = shift flags 2 (see #0505)
  8622. Notes:    AL bit 3 set only for left Alt key on many machines
  8623.     AH bits 7 through 4 always clear on a Compaq SLT/286
  8624.     INT 16/AH=09h can be used to determine whether this function is
  8625.       supported, but only on later model PS/2s
  8626.     many BIOSes (including at least some versions of Phoenix and AMI) will
  8627.       destroy AH on return from functions higher than AH=12h, returning
  8628.       12h less than was in AH on entry (due to a chain of DEC/JZ
  8629.       instructions)
  8630. SeeAlso: AH=02h,AH=09h,AH=22h,AH=51h,INT 17/AH=0Dh
  8631.  
  8632. Bitfields for keyboard shift flags 1:
  8633. Bit(s)    Description    (Table 0504)
  8634.  7    Insert active
  8635.  6    CapsLock active
  8636.  5    NumLock active
  8637.  4    ScrollLock active
  8638.  3    Alt key pressed (either Alt on 101/102-key keyboards)
  8639.  2    Ctrl key pressed (either Ctrl on 101/102-key keyboards)
  8640.  1    left shift key pressed
  8641.  0    right shift key pressed
  8642. SeeAlso: #0499,#0505,MEM 0040h:0017h,#M010
  8643.  
  8644. Bitfields for keyboard shift flags 2:
  8645. Bit(s)    Description    (Table 0505)
  8646.  7    SysReq key pressed (SysReq is often labeled SysRq)
  8647.  6    CapsLock pressed
  8648.  5    NumLock pressed
  8649.  4    ScrollLock pressed
  8650.  3    right Alt key pressed
  8651.  2    right Ctrl key pressed
  8652.  1    left Alt key pressed
  8653.  0    left Ctrl key pressed
  8654. SeeAlso: #0504,MEM 0040h:0018h,#M011
  8655. --------J-1613-------------------------------
  8656. INT 16 - DOS/V - DOUBLE-BYTE CHARACTER SET SHIFT CONTROL
  8657.     AH = 13h
  8658.     AL = function
  8659.         00h set shift status
  8660.         DX = shift status (see #0506), must preserve internal status
  8661.               bits
  8662.         01h get shift status
  8663.         Return: DX = current shift status (see #0506)
  8664. Note:    these functions are supplied by the Japanese Front-End Processor
  8665. SeeAlso: AH=14h,INT 21/AX=6301h
  8666.  
  8667. Bitfields for DOS/V shift status:
  8668. Bit(s)    Description    (Table 0506)
  8669.  0    full-size rather than half-size
  8670.  2-1    character input mode
  8671.     00 alphanumeric, 01 Katakana, 10 Hiragana, 11 unused
  8672.  5-3    internal status
  8673.  6    Romaji enabled
  8674.  7    Katakana to Kanji conversion enabled
  8675.  15-8    internal status
  8676. --------J-1614-------------------------------
  8677. INT 16 - DOS/V - SHIFT STATUS DISPLAY CONTROL
  8678.     AH = 14h
  8679.     AL = function
  8680.         00h enable display
  8681.         01h disable display
  8682.         02h get display state
  8683.         Return: AL = current state (00h enabled, 01h disabled)
  8684. Desc:    control the screen-bottom shift status row(s) for the Japanese
  8685.       Front-End Processor
  8686. SeeAlso: AH=13h,INT 10/AH=19h,INT 10/AH=1Dh
  8687. --------B-1620-------------------------------
  8688. INT 16 - KEYBOARD - GET 122-KEY KEYSTROKE (122-key kbd support only)
  8689.     AH = 20h
  8690. Return: AH = BIOS scan code (see AH=10h)
  8691.     AL = ASCII character
  8692. Note:    use AH=09h to determine whether this function is supported
  8693. SeeAlso: AH=00h,AH=09h,AH=10h,AH=21h,AH=22h
  8694. --------b-1620------------------------------------
  8695. INT 16 - HUNTER 16 - SET TEMPORARY SHIFT
  8696.     AH = 20h
  8697.     AL = shift status (see #0507)
  8698. Notes:    the Husky Hunter 16 is an 8088-based ruggedized laptop.     Other family
  8699.       members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk.
  8700.     the user can override the specified settings by pressing the keys
  8701.  
  8702. Bitfields for HUNTER 16 shift status:
  8703. Bit(s)    Description    (Table 0507)
  8704.  4    Scroll Lock on
  8705.  5    Num Lock on
  8706.  6    Caps Lock on
  8707. --------K-1620-------------------------------
  8708. INT 16 O - K3 v1.5x, K3PLUS v5.xx - GET EXTENDED BUFFER STATE
  8709.     AH = 20h
  8710. Return: AX = K3 version
  8711.     ES:BX -> extended keyboard buffer start
  8712.     ES:DX -> extended keyboard buffer end
  8713.     ES:SI -> next keystroke
  8714.     ES:DI -> last keystroke in buffer
  8715.     CX = number of keystrokes in buffer
  8716. Program: K3PLUS is an extended keyboard driver by Matthias Paul and Axel C.
  8717.       Frinke, originally based on the K3 extended German keyboard driver
  8718.       by Martin Gerdes published in c't magazine in 1988
  8719. Note:    this function was normally unsupported under K3PLUS v6.00-v6.22 and
  8720.       is no longer supported by v6.30+; use AX=AF20h instead
  8721. SeeAlso: AH=25h"K3",AX=AF20h,INT 2F/AX=D44Fh/BX=0000h,INT 2F/AX=ED58h
  8722. --------B-1621-------------------------------
  8723. INT 16 - KEYBOARD - CHECK FOR 122-KEY KEYSTROKE (122-key kbd support only)
  8724.     AH = 21h
  8725. Return: ZF set if no keystroke available
  8726.     ZF clear if keystroke available
  8727.         AH = BIOS scan code
  8728.         AL = ASCII character
  8729. Notes:    use AH=09h to determine whether this function is supported
  8730.     some versions of the IBM BIOS Technical Reference erroneously report
  8731.       that CF is returned instead of ZF
  8732.     K3PLUS v6.00+ supports this function as an alias of AH=11h
  8733. SeeAlso: AH=01h,AH=09h,AH=11h,AH=20h,AH=21h
  8734. --------b-1621------------------------------------
  8735. INT 16 - HUNTER 16 - CONTROL SHIFT KEYS
  8736.     AH = 21h
  8737.     AL = shift keys to control (see #0499)
  8738.     BL = shift state for disabled keys
  8739. Note:    If a bit in AL is set the key is disabled and set to the state of the
  8740.       corresponding bit in BL
  8741. SeeAlso: AH=20h"HUNTER",AH=22h"HUNTER"
  8742. --------B-1622-------------------------------
  8743. INT 16 - KEYBOARD - GET 122-KEY SHIFT STATUS (122-key kbd support only)
  8744.     AH = 22h
  8745. Return: AL = shift flags 1 (see #0504)
  8746.     AH = shift flags 2 (see #0505)
  8747. Notes:    use AH=09h to determine whether this function is supported
  8748.     K3PLUS v6.00+ supports this function as an alias of AH=12h
  8749. SeeAlso: AH=02h,AH=09h,AH=12h,AH=20h,AH=21h
  8750. --------b-1622------------------------------------
  8751. INT 16 - HUNTER 16 - CONTROL CTRL-ALT-DEL
  8752.     AH = 22h
  8753.     AL = new Ctrl-Alt-Del state (00h enabled, nonzero disabled)
  8754.     BX = 0708h
  8755.     CX = 0910h
  8756.     DX = 1112h
  8757. Return: AL = 00h if successful
  8758. SeeAlso: AH=21h"HUNTER",AH=23h"HUNTER",AH=2Ah
  8759. --------b-1623------------------------------------
  8760. INT 16 - HUNTER 16 - CONTROL EMERGENCY BREAKOUT
  8761.     AH = 23h
  8762.     AL = new state of breakout (00h enabled, nonzero disabled)
  8763.     BX = 0708h
  8764.     CX = 0910h
  8765.     DX = 1112h
  8766. Return: AL = 00h if successful
  8767. Desc:    Enables or disables the emergency breakout feature, where the
  8768.       Hunter 16 at power on checks whether the X and P keys are pressed.
  8769.       If so the machine will boot rather than continue the running program
  8770. SeeAlso: AH=22h"HUNTER"
  8771. --------b-1624------------------------------------
  8772. INT 16 - HUNTER 16 - REDEFINE KEY CODES
  8773.     AH = 24h
  8774.     AL = Matrix Code (see #0508)
  8775.     BL = new Key code
  8776. Return: AL = status (00h successful, nonzero failed)
  8777. SeeAlso: AH=2Bh,AH=2Ch
  8778.  
  8779. (Table 0508)
  8780. Values for HUNTER 16 Matrix Code:
  8781.  Code  Key        Code    Key        Code    Key
  8782.  00h   Esc key        1Eh    Space        3Bh    L
  8783.  01h   1        21h    0        3Ch    ,
  8784.  02h   Q        22h    -        3Eh    Right shift
  8785.  03h   Tab        23h    '        42h    8
  8786.  04h   Num Lock        24h    Keypad 4    43h    7
  8787.  05h   \        25h    Enter        44h    U
  8788.  08h   LShift        26h    Keypad 7    45h    I
  8789.  09h   Ctrl        27h    .        46h    J
  8790.  0Ah   "Paw" key    28h    Keypad 1    47h    K
  8791.  0Bh   2        29h    Keypad 0    48h    M
  8792.  0Ch   W        2Ch    =        49h    N
  8793.  0Dh   A        2Dh    Backspace    4Ah    /
  8794.  0Eh   S        2Eh    Keypad 8    4Dh    6
  8795.  0Fh   Z        2Fh    Keypad 9    4Eh    5
  8796.  11h   Alt        30h    Keypad 5    4Fh    T
  8797.  16h   4        31h    Keypad 6    50h    Y
  8798.  17h   3        32h    Keypad 2    51h    G
  8799.  18h   E        33h    Keypad 3    52h    H
  8800.  19h   R        34h    Keypad .    53h    B
  8801.  1Ah   D        37h    9        54h    V
  8802.  1Bh   F        38h    O        55h    #
  8803.  1Ch   X        39h    P        58h    Pwr
  8804.  1Dh   C        3Ah    ;        59h    Shift Pwr
  8805. --------b-1625------------------------------------
  8806. INT 16 - HUNTER 16 - RESET KEYBOARD
  8807.     AH = 25h
  8808. Return: AL = 00h
  8809. Desc:    restores the standard keyboard layout after any remapping
  8810. SeeAlso: AH=24h,AH=2Bh,AH=2Ch
  8811. --------K-1625-------------------------------
  8812. INT 16 O - K3 v1.5x, K3PLUS v5.xx - COPY INTO EXTENDED BUFFER
  8813.     AH = 25h
  8814.     CX = number of keystrokes to copy
  8815.     ES:SI -> buffer containing keystrokes
  8816. Return: CF clear if successful
  8817.     CF set on error (i.e. buffer full)
  8818.         CX = number of keystrokes NOT transferred
  8819.         ES:SI -> first keystroke not transferred
  8820. Note:    this function was normally unsupported under K3PLUS v6.00-v6.22 and
  8821.       is no longer supported by v6.30+; use AX=AF25h instead
  8822. SeeAlso: AH=05h,AH=20h"K3",AX=AF25h,INT 2F/AX=D44Fh/BX=0001h
  8823. --------b-1626------------------------------------
  8824. INT 16 - HUNTER 16 - CONTROL KEYCLICK
  8825.     AH = 26h
  8826.     AL = new state of keyclicks (00h disabled, 01h enabled)
  8827. Return: AL = 00h
  8828. SeeAlso: AH=2Ah
  8829. --------b-1627------------------------------------
  8830. INT 16 - HUNTER 16 - CONTROL SCREEN DUMP AREA
  8831.     AH = 27h
  8832.     AL = what to dump
  8833.         00h whole (virtual) window
  8834.         01h LCD window only
  8835. Return: AL = 00h
  8836. Desc:    control whether printscren dumps the whole 80x25 screen or only the
  8837.       part displayed in the LCD window
  8838. Note:    the Hunter 16 has a 240x64 LCD display which serves as a window into
  8839.       a 640x200 virtual screen
  8840. --------b-1629------------------------------------
  8841. INT 16 - HUNTER 16 - GET KEY REPEAT
  8842.     AH = 29h
  8843. Return: BL = Typematic rate (characters per second) (see #0509)
  8844.     BH = delay (00h = 250ms, 01h = 500ms, 02h = 750ms, 03h = 1s)
  8845. SeeAlso: AH=03h,AH=2Ah
  8846.  
  8847. (Table 0509)
  8848. Values for HUNTER 16 Typematic rate:
  8849.  00h    30.0     08h    15.0     10h    7.5     18h    3.7
  8850.  01h    26.7     09h    13.3     11h    6.7     19h    3.3
  8851.  02h    24.0     0Ah    12.0     12h    6.0     1Ah    3.0
  8852.  03h    21.8     0Bh    10.9     13h    5.5     1Bh    2.7
  8853.  04h    20.0     0Ch    10.0     14h    5.0     1Ch    2.5
  8854.  05h    18.5     0Dh     9.2     15h    4.6     1Dh    2.3
  8855.  06h    17.1     0Eh     8.6     16h    4.3     1Eh    2.1
  8856.  07h    16.0     0Fh     8.0     17h    4.0     1Fh    2.0
  8857. SeeAlso: AH=2Ah
  8858. --------b-162A------------------------------------
  8859. INT 16 - HUNTER 16 - CONTROL KEY REPEAT
  8860.     AH = 2Ah
  8861.     AL = new state of keyboard autorepeat (00h disabled, 01h enabled)
  8862. SeeAlso: AH=03h,AH=26h,AH=29h,AH=2Bh
  8863. --------b-162B------------------------------------
  8864. INT 16 - HUNTER 16 - REDEFINE KEY SCAN CODES
  8865.     AH = 2Bh
  8866.     AL = which key table to redefine
  8867.         00h unshifted
  8868.         01h shifted
  8869.         02h Numlock
  8870.     BH = standard scan code of key (00h-80h)
  8871.     BL = new scan code
  8872. Desc:    redefine the generated scan code from BH to BL
  8873. SeeAlso: AH=24h,AH=2Ah,AH=2Ch
  8874. --------b-162C------------------------------------
  8875. INT 16 - HUNTER 16 - REDEFINE RAW KEY CODES
  8876.     AH = 2Ch
  8877.     AL = Matrix code of key (see AH=29h)
  8878.     BL = new key code
  8879. Return: AL = status (00h success, nonzero failed)
  8880. Desc:    redefine the key code generated by holding the PAW key down and
  8881.       pressing the key in AL
  8882. SeeAlso: AH=24h,AH=2Bh
  8883. --------b-162D------------------------------------
  8884. INT 16 - HUNTER 16 - CONTROL BREAK KEYS
  8885.     AH = 2Dh
  8886.     AL = enabled break keys
  8887.         bit 0 Ctrl-C
  8888.         bit 1 Ctrl-Break
  8889.     BX = 0708h
  8890.     CX = 0910h
  8891.     DX = 1112h
  8892. Return: AL = status (00h success, FFh failed)
  8893. SeeAlso: AH=21h"HUNTER"
  8894. --------U-163577-----------------------------
  8895. INT 16 U - TextWare TWTSR - API
  8896.     AX = 3577h
  8897.     CX = function
  8898.         00CBh ???
  8899.         Return: AX = 0000h
  8900.             BX = 0000h
  8901.             DX:CX -> ???
  8902.         00CCh uninstall
  8903.         Return: AX = status
  8904.                 0000h successful
  8905.                 FFFDh unable to unload because vectors taken
  8906.         00CDh ???
  8907.         Return: AX = 0000h
  8908.             BX = 0000h
  8909.             DX:CX -> ???
  8910.         other
  8911.         Return: AX = 5345h ('SE')
  8912. Program: TWTSR is a TSR which allows the TextWare hypertext browser to be
  8913.       popped up via hotkey
  8914. SeeAlso: AX=D724h
  8915. --------U-164252-----------------------------
  8916. INT 16 - TEXTCAP 2.0 - INSTALLATION CHECK
  8917.     AX = 4252h
  8918. Return: AX = 5242h if installed
  8919. Program: TEXTCAP 2.0 is a heavily modified (by Gisbert W. Selke) version of
  8920.       the PC Magazine utility CAPTURE written by Tom Kihlken
  8921. SeeAlso: AX=4253h,AX=4254h
  8922. --------U-164253-----------------------------
  8923. INT 16 - TEXTCAP 2.0 - UNINSTALL
  8924.     AX = 4253h
  8925. Return: AX = segment of resident code
  8926. Notes:    the uninstall code does not check whether interrupt vectors have been
  8927.       chained by other programs
  8928.     the caller must free the main memory block (using the returned segment)
  8929. SeeAlso: AX=4252h,AX=4254h
  8930. --------U-164254-----------------------------
  8931. INT 16 - TEXTCAP 2.0 - DUMP TEXT SCREEN TO FILE
  8932.     AX = 4254h
  8933. Return: AX = status
  8934.         4254h if screen dump will be written as soon as disk becomes idle
  8935.         5442h if screen dump written
  8936. SeeAlso: AX=4252h,AX=4253h
  8937. --------e-164500-----------------------------
  8938. INT 16 - Shamrock Software EMAIL - GET STATUS
  8939.     AX = 4500h
  8940.     DL = port number (01h = COM1)
  8941.     ES:BX -> 13-byte buffer for ASCIZ name
  8942. Return: AX = 4D00h if EMAIL installed on specified port
  8943.         ES:BX -> "" if no connection
  8944.           -> "*" if connection but caller has not identified name
  8945.           -> name otherwise
  8946.         CX = version (CH = major, CL = minor)
  8947.         DL = privilege level of user (00h = guest)
  8948.         DH = chosen language (00h German, 01h English)
  8949. SeeAlso: AX=4501h,AX=4502h
  8950. --------e-164501-----------------------------
  8951. INT 16 - Shamrock Software EMAIL - GET ELAPSED ONLINE TIME AND MAXIMUM TIME
  8952.     AX = 4501h
  8953.     DL = port number (01h = COM1)
  8954. Return: AX = 4D00h if EMAIL installed on specified port
  8955.         BX = maximum connect time in clock ticks
  8956.         CX = maximum connect time for guests (without name) in clock ticks
  8957.         DX = elapsed connect time of current user in clock ticks
  8958. SeeAlso: AX=4500h
  8959. --------e-164502-----------------------------
  8960. INT 16 - Shamrock Software EMAIL - GET CURRENT COMMUNICATIONS PARAMETERS
  8961.     AX = 4502h
  8962.     DL = port number (01h = COM1)
  8963. Return: AX = 4D00h if EMAIL installed on specified port
  8964.         BL = current value of serial port's Line Control Register
  8965.         BH = flags (see #0510)
  8966.         CX = selected country code (33 = France, 49 = Germany, etc)
  8967.         DX = baudrate divisor (115200/DX = baudrate)
  8968. SeeAlso: AX=4500h
  8969.  
  8970. Bitfields for Shamrock Software EMAIL flags:
  8971. Bit(s)    Description    (Table 0510)
  8972.  0    ISO code
  8973.  1    pause
  8974.  2    linefeed
  8975.  3    ANSI sequences
  8976. --------e-164503-----------------------------
  8977. INT 16 - Shamrock Software EMAIL - SPECIFY COMMAND-WORD FOR USER FUNCTION
  8978.     AX = 4503h
  8979.     DL = port number (01h = COM1)
  8980.     DH = maximum execution time in clock ticks (00h = 5 seconds)
  8981.     ES:BX -> ASCIZ string with new user command-word
  8982. Return: AX = 4D00h if EMAIL installed on specified port
  8983. Notes:    a single user command (consisting of only uppercase letters and digits)
  8984.       may be defined, and remains valid until it is overwritten or the
  8985.       EMAIL program terminates; the user command must be activated by
  8986.       calling AX=4504h at least once.
  8987.     an existing command word may be redefined with this function
  8988. SeeAlso: AX=4504h,AX=4505h
  8989. --------e-164504-----------------------------
  8990. INT 16 - Shamrock Software EMAIL - CHECK FOR USER FUNCTION COMMAND-WORD
  8991.     AX = 4504h
  8992.     DL = port number (01h = COM1)
  8993.     ES:BX -> 80-byte buffer for ASCIZ user input line
  8994. Return: AX = 4D00h if EMAIL installed on specified port
  8995.         DL = flags
  8996.         bit 0: user function supported (always set)
  8997.         bit 1: user entered user-function command word
  8998.         if DL bit 1 set,
  8999.         ES:BX buffer contains line entered by user which begins with
  9000.             the defined command word and has been converted to all
  9001.             caps
  9002. Note:    caller must process the returned commandline and invoke AX=4505h
  9003.       within five seconds with the result of that processing
  9004. SeeAlso: AX=4503h,AX=4505h
  9005. --------e-164505-----------------------------
  9006. INT 16 - Shamrock Software EMAIL - SEND RESULT OF USER FUNCTION
  9007.     AX = 4505h
  9008.     DL = port number (01h = COM1)
  9009.     DH = error flag
  9010.         bit 3: set on error
  9011.     ES:BX -> ASCIZ text to return to user, max 1024 bytes
  9012. Return: AH = 4Dh if EMAIL installed on specified port
  9013.     AL = status
  9014.         00h successful
  9015.         02h unable to perform function (timeout, prev call not complete)
  9016.         other error
  9017. Notes:    if the error flag in DH is set, the string is not sent and an error
  9018.       message is generated instead; if this function is not called within
  9019.       five seconds of AX=4504h, EMAIL automatically generates an error
  9020.       message
  9021.     the string is copied into an internal buffer, allowing this function's
  9022.       caller to continue immediately
  9023. SeeAlso: AX=4503h,AX=4504h,INT 17/AX=2400h
  9024. --------e-164506-----------------------------
  9025. INT 16 - Shamrock Software EMAIL - MONITOR XMODEM DOWNLOAD
  9026.     AX = 4506h
  9027.     DL = port number (01h = COM1)
  9028.     ES:BX -> 13-byte buffer for ASCIZ filename
  9029. Return: AX = 4D00h if EMAIL installed on specified port
  9030.         DH = Xmodem status
  9031.         00h no XGET command given
  9032.         01h XGET in progress
  9033.         02h XGET completed successfully
  9034.         ES:BX buffer filled with last filename given to XGET command
  9035.         (without path)
  9036. Note:    DH=02h will only be returned once per XGET; subsequent calls will
  9037.       return DH=00h
  9038. SeeAlso: AX=4500h,INT 17/AX=2408h
  9039. --------K-164B-------------------------------
  9040. INT 16 - Frank Klemm Keyboard Driver v2.0 - API
  9041.     AH = 4Bh
  9042.     CX = code or action
  9043.         0000h-FEFFh key code
  9044.         FF00h-FFFFh action (see #0511)
  9045.     BL = scan code (normal keys) or scan code + 60h (enhanced keys)
  9046.     BH = shift state (see #0512)
  9047. Return: CX = previous code or action
  9048.  
  9049. (Table 0511)
  9050. Values for Frank Klemm Keyboard Driver action code:
  9051.  FF00h    no action
  9052.  FF01h    hardcopy
  9053.  FF02h    left shift
  9054.  FF03h    right shift
  9055.  FF04h    left Ctrl
  9056.  FF05h    right Ctrl
  9057.  FF06h    left Alt
  9058.  FF07h    right Alt / AltGr
  9059.  FF08h    CapsLock
  9060.  FF09h    NumLock
  9061.  FF0Ah    ScrlLock
  9062.  FF0Bh    Insert (returns code 5200h or 52E0h)
  9063.  FF0Ch    Pause
  9064.  FF0Dh    Ctrl-Break function
  9065.  FF0Eh    warm boot via far jump to F000h:FFF0h
  9066.  FF0Fh    terminate current program
  9067.  FF10h    key for entering keys via Alt-numpad (read-only)
  9068.  FF11h    clear keyboard buffer
  9069.  FF12h    reset (warmboot on XT)
  9070.  FF13h    mouse sensitivity (read-only)
  9071.  FF14h    keyjobs (read-only)
  9072.  FF15h    SysRq
  9073.  FF16h    turn on CPU cache (486+)
  9074.  FF17h    turn off CPU cache (486+)
  9075. SeeAlso: #0512
  9076.  
  9077. (Table 0512)
  9078. Values for Frank Klemm Keyboard Driver shift state:
  9079.  00h    no shift keys
  9080.  01h    either Shift
  9081.  02h    either Ctrl
  9082.  03h    left Alt
  9083.  04h    Ctrl + Alt
  9084. ---standard keyboard---
  9085.  05h    right Alt / AltGr
  9086. ---Russian keyboard---
  9087.  05h    Russian + no shift keys
  9088.  06h    Russian + either Shift
  9089. SeeAlso: #0511
  9090. --------K-164D4F-----------------------------
  9091. INT 16 - M16_KBD.COM v5.6 - INSTALLATION CHECK
  9092.     AX = 4D4Fh
  9093. Return: AX = 6F6Dh if installed
  9094.         ES = segment of resident code
  9095. Program: M16_KBD is a shareware Cyrillic keyboard driver by I.V. Morozov
  9096. SeeAlso: INT 10/AX=1130h/BX=4D4Fh
  9097. --------J-165000-----------------------------
  9098. INT 16 - KEYBOARD - AX PC - SET KEYBOARD COUNTRY CODE
  9099.     AX = 5000h
  9100.     BX = country code
  9101.         0001h USA (English), 0051h Japan
  9102. Return: AL = status
  9103.         00h successful
  9104.         01h bad country code
  9105.         02h other error
  9106. Notes:    the K3PLUS v6.00+ INT 16 BIOS replacement will switch between the
  9107.       supported country specific layout (e.g. BX=0031h Germany, BX=001Fh
  9108.       Netherlands, BX=0020h Belgium, BX=0022h Spain) (as with <Ctrl>+
  9109.       <Alt>+<F2>) and K3PLUS' transparent mode (as with <Ctrl>+<Alt>+<F1>).
  9110.     In transparent mode (BX=0001h), K3PLUS chains to the underlying
  9111.       driver (normally the BIOS driver with US-layout). K3PLUS beeps on
  9112.       mode changes
  9113. SeeAlso: AX=5001h,AX=AF4Dh,INT 10/AX=5000h,INT 17/AX=5000h
  9114. --------J-165001-----------------------------
  9115. INT 16 - KEYBOARD - AX PC - GET KEYBOARD COUNTRY CODE
  9116.     AX = 5001h
  9117. Return: AL = status
  9118.         00h successful
  9119.         BX = country code
  9120.         02h error
  9121. Note:    also supported by K3PLUS v6.00+
  9122. SeeAlso: AX=5000h,INT 10/AX=5001h,INT 17/AX=5001h
  9123. --------J-1651-------------------------------
  9124. INT 16 - KEYBOARD - AX PC - READ SHIFT KEY STATUS
  9125.     AH = 51h
  9126. Return: AL = standard shift key states (see #0499,#0504)
  9127.     AH = Kana lock (00h off, 01h on)
  9128. Note:    also supported by K3PLUS v6.00+, but K3PLUS always returns AH=00h
  9129. SeeAlso: AH=02h,AH=12h,AH=22h
  9130. --------t-165453BX5242-----------------------
  9131. INT 16 - TSRBONES - INSTALLATION CHECK
  9132.     AX = 5453h ('TS')
  9133.     BX = 5242h ('RB')
  9134.     CX = 4F4Eh ('ON')
  9135.     DX = 4553h ('ES')
  9136. Return: AX = 4553h if installed
  9137.     BX = 4F4Eh if installed
  9138.     CX = 5242h if installed
  9139.     DX = 5453h if installed
  9140. Program: TSRBONES is a skeletal TSR framework by Robert Curtis Davis
  9141. Note:    these values are the default as the TSRBONES package is distributed,
  9142.       but will normally be changed when implementing an actual TSR with
  9143.       the TSRBONES skeleton
  9144. SeeAlso: INT 2D/AL=00h"AMIS"
  9145. --------A-165500-----------------------------
  9146. INT 16 C - Microsoft Word internal - MICROSOFT WORD COOPERATION WITH TSR
  9147.     AX = 5500h
  9148. Return: AX = 4D53h ('MS') if keyboard TSR present
  9149. Notes:    during startup, Microsoft Word tries to communicate with any TSRs
  9150.       that are present through this call.
  9151.     if the return is not 4D53h, Word installs its own INT 09 and INT 16
  9152.       handlers; otherwise it assumes that the TSR will handle the keyboard
  9153. SeeAlso: AX=55FFh,INT 1A/AX=3601h
  9154. --------A-1655FE-----------------------------
  9155. INT 16 CU - Microsoft QBASIC internal - MICROSOFT COOPERATION WITH TSR
  9156.     AX = 55FEh
  9157.     DX = function
  9158.         0000h initialize
  9159.         ES:BX -> ??? function
  9160.         ES:CX -> ??? structure
  9161.         FFFFh shutdown/reset
  9162. Return: AX = result
  9163.         4D4Bh only the INT 1B handler will be installed.
  9164.         other: handlers for INT 08, INT 09, INT 16, INT 1B, and INT 1C
  9165.           are installed
  9166. Notes:    The pointer in ES:CX seems to point at a structure defining a callback
  9167.       function when new keyboard keys are pressed. If a TSR returns
  9168.       AX=4D4Bh, QBASIC will stop (with IRQ's and interrupts enabled).
  9169.     these calls are also made by MS-DOS 6.0's DOSSHELL at startup, exit,
  9170.       and before/after shelling out
  9171.     since EDIT.COM and HELP.COM merely invoke QBASIC, those two programs
  9172.       will also cause this interface to be invoked
  9173.     K3PLUS v6.07+ supports this function, but will never invoke the
  9174.       callback function
  9175. SeeAlso: AX=5500h,AX=AF4Dh,INT 1A/AX=3601h
  9176. --------U-1655FF-----------------------------
  9177. INT 16 C - Microsoft Word - TSR COOPERATION???
  9178.     AX = 55FFh
  9179.     BX >= 0004h (version of Microsoft Word [BL = major] ???)
  9180.     CX = function
  9181.         0000h set ??? flag
  9182.         other clear ??? flag
  9183. Notes:    hooks intercepting this call are present in SWAPSH and SWAPDT v1.77j,
  9184.       distributed with PC Tools v7, as well as the Trusted Access
  9185.       SCRNBLNK.COM; this may be part of the standard TesSeRact library
  9186.     known to be called by the German edition of Microsoft Word 5.0
  9187. SeeAlso: AX=5500h,INT 2F/AX=5453h
  9188. --------c-165758BX4858-----------------------
  9189. INT 16 U - Netroom CACHECLK - INSTALLATION CHECK
  9190.     AX = 5758h
  9191.     BX = 4858h ('HX')
  9192.     DX = 4443h ('DC')
  9193.     CX <> 5758h
  9194. Return: BX = 6878h if installed
  9195.     CX = 6463h if installed
  9196.         AX = code segment of TSR
  9197.         CX = internal version??? (v3.00 returns 0100h)
  9198. Program: CACHECLK is a "cloaked" disk cache included with Netroom
  9199. Notes:    if CX=5758h on entry, CACHECLK returns with all registers unchanged
  9200.     the cache statistics are located early in the segment pointed at by
  9201.       AX on return
  9202. SeeAlso: INT 2F/AX=5758h
  9203. --------m-165758BX5754-----------------------
  9204. INT 16 U - Netroom ??? - ???
  9205.     AX = 5758h
  9206.     BX = 5754h
  9207.     ???
  9208. Return: ???
  9209. --------m-165758BX5755-----------------------
  9210. INT 16 U - Netroom ??? - ???
  9211.     AX = 5758h
  9212.     BX = 5755h
  9213.     DS:SI -> ???
  9214. Return: ???
  9215. --------m-165758BX5756-----------------------
  9216. INT 16 U - Netroom ??? - INSTALLATION CHECK
  9217.     AX = 5758h
  9218.     BX = 5756h
  9219. Return: BX <> 5756h if installed
  9220. --------m-165758BX5858-----------------------
  9221. INT 16 U - Netroom PRENET - GET OLD INTERRUPT VECTORS
  9222.     AX = 5758h
  9223.     BX = 5858h
  9224. Return: CF clear
  9225.     DX:BX -> saved copy of interrupt vector table
  9226. Note:    the installation check consists of calling this function and comparing
  9227.       BX against 5858h on return; if it has changed, PRENET is installed
  9228. SeeAlso: AX=5758h/BX=5859h
  9229. Index:    installation check;Netroom PRENET
  9230. --------m-165758BX5859-----------------------
  9231. INT 16 U - Netroom POSTNET - GET OLD INTERRUPT VECTORS
  9232.     AX = 5758h
  9233.     BX = 5859h
  9234. Return: CF clear
  9235.     DX:BX -> saved copy of interrupt vector table
  9236. Note:    the installation check consists of calling this function and comparing
  9237.       BX against 5859h on return; if it has changed, POSTNET is installed
  9238. SeeAlso: AX=5758h/BX=5858h
  9239. Index:    installation check;Netroom POSTNET
  9240. ----------166701-----------------------------
  9241. INT 16 - Doorway v2.30+ - INSTALLATION CHECK
  9242.     AX = 6701h
  9243. Return: AX = 8080h if running under Doorway
  9244. Program: Doorway is a program by Marshall Dudley which allows most DOS programs
  9245.       to run as a BBS door without modification
  9246. --------U-166969BX6968-----------------------
  9247. INT 16 - PC Tools v5.1+ BACKTALK - UNHOOK
  9248.     AX = 6969h
  9249.     BX = 6968h
  9250. Return: resident code unhooked, but not removed from memory
  9251. Index:    uninstall;BACKTALK
  9252. --------U-166969BX6969-----------------------
  9253. INT 16 - PC Tools v5.1+ BACKTALK - INSTALLATION CHECK
  9254.     AX = 6969h
  9255.     BX = 6969h
  9256.     DX = 0000h
  9257. Return: DX nonzero if installed
  9258.         BX = CS of resident code
  9259.         DX = PSP segment of resident code
  9260.         DS:SI -> ASCIZ identification string "CPoint Talk"
  9261. --------i-166A6B-----------------------------
  9262. INT 16 U - FastJuice - DISABLE/UNLOAD???
  9263.     AX = 6A6Bh
  9264. Return: ???
  9265. Program: FastJuice is a resident battery-power monitor by SeaSide Software
  9266. SeeAlso: AX=7463h
  9267. Index:    uninstall;FastJuice
  9268. --------G-166C63-----------------------------
  9269. INT 16 U - TMED v1.6a - INSTALLATION CHECK
  9270.     AX = 6C63h ('lc')
  9271. Return: AX = 4C43h ('LC') if installed
  9272. Program: TMED is a freeware resident memory editor by Liang Chen
  9273. --------U-166D74-----------------------------
  9274. INT 16 - MTRTSR - INSTALLATION CHECK
  9275.     AX = 6D74h ('mt')
  9276. Return: AX = 4D54h ('MT') if installed
  9277. Program: MTRTSR is a part of the shareware MTR package by Mechon Mamre which
  9278.       permits searching the large corpus of classical Hebrew texts in the
  9279.       package
  9280. SeeAlso: INT 10/AX=6D74h"MTRFONTS"
  9281. --------!---Section--------------------------
  9282.